der*_*ble 2 python selenium unit-testing assert
目前我有一个循环字典的测试用例,每个字典都包含一个我想在网页上测试的单独值(我使用的是 Selenium Webdriver,尽管这不一定与问题相关)。这个测试用例基本上将检查产品的所有可能的购买路径是否正常工作,结果大约有 200 条不同的路径。我想保持代码简单,而不是对每一个都进行测试。以下是我为缩短代码所做的工作的示例:
self.templates = {"sales": self.sales", ...)
self.template_keys = ["sales",....]
self.sales - {"locator1": "<locataor info>, ...)
.... <more dictionaries>
for key in self.template_keys:
for template in self.templates[key]:
<do purchase path in selenium webdriver>
assert end_url == expected_end_url # Would like failure to not end test
Run Code Online (Sandbox Code Playgroud)
我的问题是如何让嵌套 for 循环中的断言不会致命失败并继续下一步。我读过这篇 stackoverflow 文章,似乎他决定做自己的事情,而没有提供任何关于他所做的事情的信息。我知道这是一种反模式,但不值得花时间将它们全部单独写出来。我想知道是否有人有一个很好的解决方案,就像 Groovy 中的软断言一样。
收集多个失败的报告:将 替换为assertanif并为其正文中的每个失败创建一个描述符。将这些描述符收集在一个列表中(最初为空:)failures = []:
if end_url != expected_end_url:
failures.append(end_url + ' != ' + expected_end_url)
Run Code Online (Sandbox Code Playgroud)
最后,assert列表为空,如果不是,则将其用作错误消息:
assert(failures == [], str(failures))
Run Code Online (Sandbox Code Playgroud)
比捕获异常更具可读性——而且也非常灵活。
| 归档时间: |
|
| 查看次数: |
4820 次 |
| 最近记录: |