【问题标题】:How can I log something with python logger only when an assert fails?仅当断言失败时,如何使用 python 记录器记录某些内容?
【发布时间】:2020-07-11 12:55:37
【问题描述】:
@pytest.mark.usefixtures("oneTimeSetUp","setUp")
class BeyondTest(unittest.TestCase):
    log = cl.testLogger(logging.INFO)
    @pytest.fixture(autouse=True)
    def classSetup(self,oneTimeSetUp):
        self.ts = TestStatus(self.driver)
        self.bmf = BMF(self.driver)


    @pytest.mark.run(order=1)
    def test_site_to_csv(self):
        self.bmf.imagelist()
        first_column =[l[4] for l in self.bmf.csvreader]
        list_site_to_csv = [item for item in self.bmf.full_list if item not in first_column]
        self.log.INFO(list_site_to_csv)
        assert len(list_site_to_csv)<=0

所以我有一个 csv 包含一些需要在站点上验证的数据,我首先捕获站点上的数据附加到列表“self.bmf.full_list”,csv 列保存在 first_column 列表中, 然后,我比较两个列表并将 csv 中缺少但存在于站点上的列表保存到列表“list_site_to_csv。断言是 len(list_site_to_csv)

if assert len(list_site_to_csv)<=0:
    then self.log.INFO(list_site_to_csv)

比列表更好的处理方法的任何其他建议也很棒

【问题讨论】:

  • 您不只是想要一个 if 语句吗?您可以将断言放在 try/except 块中以捕获异常,记录,然后引发异常。

标签: python python-3.x selenium-webdriver logging pytest


【解决方案1】:

assert 接受第二个参数。示例:

>>> list_site_to_csv = ['apples']
>>> assert not list_site_to_csv, f'It failed. List is not empty. {list_site_to_csv}'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError: It failed. List is not empty. ['apples']

在这种情况下,如果list_site_to_csv 不为空,断言将弹出,并显示消息。

注意:

len(list_site_to_csv) if not my_var:。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 2016-02-05
    • 1970-01-01
    • 2019-09-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多