如何测试 python 方法一次处理 2 个请求的能力?



_createAccount()方法,取两个参数如下

def _createAccount(self,username,emailID):
<statements to create account with respect to received emailID>

需要使用unittest测试此方法,即使用单个测试方法,我想一次发送两个具有相同emailID和不同用户名的请求。两个请求中的一个必须得到响应,就像已经使用此电子邮件ID创建的帐户一样。如何将createAccount requests与单元测试并行发送。

我想这段代码将在web应用程序中运行,这样一次可以处理多个请求。

一种方法可以是在测试中创建线程,在不同的线程中运行该方法并检查结果,但这需要注意很多。一旦并行执行线程,执行顺序就不再是确定性的,而是取决于调度程序,调度程序或多或少可以被认为是随机的。这意味着,即使你的方法在某些情况下(通过精确的命令或执行)失败,也无法确保它能够重现这些情况。换句话说,通过测试不会告诉你任何关于方法有效性的信息。

对于这种同步问题,你必须编写代码,以确保你不想发生两次的事情不会发生。为此,您需要确保您的创建/验证代码是原子代码。

例如,如果您使用的是sql数据库,则可以在username或emailID列上指定唯一性约束,这样第二个请求就会失败(sql事务是原子事务)。在其他情况下,您可能希望使用锁来确保只有一个线程在执行"检查是否存在,如果不创建"部分。

最新更新