在 Selenium Unittest 中同时断言两个语句为真

Asserting two statements are true at the same time in Selenium Unittest

我一直在尝试断言两个文本框元素包含成功测试的两个特定值。

文本框 1:100 文本框 2:0

我试过以下代码:

def test_example(self):

    self.set_textbox1('100')
    self.set_textbox2('0')

    tb1 = self.find_by_id('textbox1')
    tb2 = self.find_by_id('textbox2') 

    self.assertEquals((tb1.get_attribute('value'), 100) and (tb2.get_attribute('value'), 0))

这会产生以下错误:

Traceback (most recent call last):
File "test_textboxes.py", line 48, in test_textbox
self.assertEquals((tb1.get_attribute('value'), 100) and (tb2.get_attribute('value'), 0))
TypeError: assertEqual() takes at least 3 arguments (2 given)

有办法吗?

对我来说,可读性是单元测试最重要的一点之一,我更愿意为每个案例使用多行断言。 您可以保留您的工作流程,但使用 assertEqual 并添加类似的东西

self.assertEqual((tb1.get_attribute('value'),tb2.get_attribute('value'),(100,0))

AssertionError 假设第一个值查询是 99:

AssertionError: (99,0) != (100,0)    

以下可能会解决您的问题:

连接 2 个字符串:

self.assertEqual(tb1.get_attribute('value') + tb2.get_attribute('value'), '1000')

或者:

self.assertEqual(''.join([tb1.get_attribute('value'), tb2.get_attribute('value')]), '1000')

使用元组:

self.assertEqual((tb1.get_attribute('value'), tb2.get_attribute('value')), (100, 0))