我正在使用python编写单元测试 unittest
模块。我有一个 Transact
类,该类使用selenium bot通过前端生成测试事务。对该类的调用如下所示:
Transact(amount=90, paypal=True)
这将使用paypal支付90美元的测试交易。
我用这种方法定义了十几个不同参数的单元测试。我把他们放在这样一个班里:
class TestTransactions(unittest.TestCase):
def test_default(self):
Transact()
def test_amount_change(self):
Transact(amount=10)
...
def test_paypal(self):
Transact(amount=90, paypal=True)
当我注解掉所有其他测试并运行任何一个单元测试时,它都能完美地工作。然而,当我试着跑的时候 unittest.main()
为了运行所有定义的测试,他们开始共享变量——例如,只有一个测试应该使用paypal支付,但有几个测试随机使用paypal支付,即使没有指示这样做。
正如您在我的代码示例中所看到的,每次我示例化一个新对象时,我都不确定这些以前的值是如何持久化的——至少,这是我假设正在发生的事情,但我始终无法弄清楚它为什么要这样做。任何指导都将不胜感激。
编辑以根据评论提供更多信息:
对于transact()类的每个示例化,selenium bot都会打开一个浏览器,执行所需的操作,然后完全关闭browser/selenium驱动程序。从一个测试到另一个测试,不应该有任何数据或任何其他维护——每个测试都是完全独立的。
如果有用的话,我怀疑罪魁祸首是unittest模块,因为所有测试都是单独工作的,只有在调用 unittest.main()
它似乎混淆了变量。有什么好处?
暂无答案!
目前还没有任何答案,快来回答吧!