【问题标题】:Asserting two statements are true at the same time in Selenium Unittest在 Selenium Unittest 中同时断言两个语句为真
【发布时间】:2016-11-22 09:44:01
【问题描述】:

我一直试图断言两个文本框元素包含两个特定值以进行成功的测试。

文本框 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)

有没有办法做到这一点?

【问题讨论】:

标签: python unit-testing selenium python-unittest


【解决方案1】:

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

连接两个字符串:

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))

【讨论】:

  • 使用.join()查看编辑示例
【解决方案2】:

对我来说,可读性是单元测试中最重要的一点之一,我希望对每种情况都有多行断言。 您可以保留您的工作流程,但使用 assertEqual 并添加类似的内容

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2015-02-02
    相关资源
    最近更新 更多