• pytest今日小坑,失败截图插附在allure报告中


    今天又踩N多坑

    1、我在testcase里头跑,

    if __name__ =="__main__":
      pytest.main(xxxxx) 

    怎么跑都跑不出来allure报告,明明代码是一样的

    最后我跑到了根目录或者说,pytest检测不知道我是一个testcase的目录下,跑相同代码,出来报告了

    可能是与pycharm觉得我在单元测试,而非跑整个套件有关

    2、中午碰到的坑。也是因为在刚学conftest,不太熟悉它

    我想啊,让pytest跑完个用例之前,自己开启一个链接,driver;跑完后呢,自己再关闭  driver.quit() 掉

    就这么个小小的愿望,把我折磨疯了。。

    首先,我尝试了,pytest给的,setup  teardown    但是不能传参数,setup倒还好,我启动不需要什么参数,teardown,我需要那个driver啊,没那driver我咋driver.quit()?

    然后,我发现setup  teardown  有个self的参数,OK,那我__init__ 里头,把这个driver传给self 不是美滋滋。。。。结果pytest不让测试用例有__init__,又走不通。

    再之后,想办法,想到了conftest里头写fixture,,scope弄成 function级别的

    找对路子了,我想写两个,一个before,一个after。。。。又回到了问题1,,,,,before不用参数,after需要driver,,,我不会传,,,我不知道怎么在conftest里头给fixture传参数

    最后想到了yield

    @pytest.fixture(scope="function")
    def getDriver():
        driver = Driver.prepareForAndroidAppium()
        yield driver
        driver.quit()

    就是想到了yield了,也很艰难,我想不通怎么回到yield上去。之前学习yield的时候,是将getDriver弄成迭代器,再次call它,就会回去。。。然而这边getDriver在testcase里头调用,直接成了个webdriver对象,

      后来听高人一指点,才恍然大悟,我根本不用操心,它跑完自己就会回去。。。

    3、把失败截图嵌入到allure报告里面去

    在conftest里头修改钩子函数,让用例跑出来failed时候,进行截图操作

    @pytest.hookimpl(hookwrapper=True, tryfirst=True)
    def pytest_runtest_makereport(item):
    outcome = yield
    report = outcome.get_result()

    if report.when == 'call':
    if report.outcome == 'failed':
    Driver.get_screenshot_as_file(item.funcargs['getDriver'], extra=item.funcargs["case"].testNo)
    with allure.step("添加失败截图..."):
    allure.attach(Driver.get_screenshot_as_png(item.funcargs['getDriver']), "失败截图", allure.attachment_type.PNG)

    坑1:我自己封装的Driver库里头,get_screenshot_as_png  没有return出去,导致他要嵌进入byte object,而我是None Type(真是太傻了)

    坑2:get_screenshot_as_file  这玩意,我捉摸好久,为啥本地的截图没出来。

    结果是因为,它如果找不到目录,是不会自己创建目录的,也不报错,娇气的很。

    以此做记录。

  • 相关阅读:
    【JavaScript】JavaScript中的Timer是怎么工作的( setTimeout,setInterval)
    【JavaScript】一些注意点
    【Java】Checked、Unchecked Exception
    【Java】sleep和wait的区别
    【314】putty 自动登录
    【313】python 中 print 函数用法总结
    【312】◀▶ arcpy 常用函数说明
    【311】Python 构建 ArcMap 标注表达式
    【310】◀▶ Python 日期和时间
    java从mysql导出数据例子
  • 原文地址:https://www.cnblogs.com/july401/p/14110472.html
Copyright © 2020-2023  润新知