【Python自动化训练营】pytest实战(一)课程贴

课前预习内容

https://ceshiren.com/t/topic/2079

参考链接

pytest 安装

pytest 运行

pytest 测试装置

pytest 参数化与数据驱动

课后作业

https://ceshiren.com/t/topic/2117

录播问题:

  1. 把参数当成函数执行,test_user_data在login_r函数中也没有调用,为啥就执行的时候默认就把参数当login_r函数执行了?login_r中用的是{user},为啥不是{test_user_data}呢?微信图片_20200514180147

  2. raise NameError # 抛出异常 这个就可以把XPASS改成XFAIL??

  • allure采用生成报告,打开报告的方式,生成测试报告的方法:
  • 在pycharm中能打开
  • 进入报告存放路径,直接打开该报告,一直loading
  • 在pycharm中把报告拖到桌面,打开该报告,一片空白

    这是为啥?allure生成的报告,如果只能在pycharm中打开的话,那怎样把报告发给别人呢?pytest-html生成的报告,不存在这种情况。

不支持双击.html文件打开,需要执行命令,启动一个服务,打开html页面

如何将测试报告给别人看?

  1. 打包,在有同样环境的机器上打开,
  2. 搭建服务器,专门用来跑自动化, 专门查看测试报告
  3. 结合 JenKins ,Jenkins 插件 allure相关的, 在Jenkins查看测试报告

1.通常我们使用@pytest.mark.parametrize()可以传入参数,而这个例子是它的一个高级用法,@pytest.mark.parametrize()还可以传入一个测试的方法,如果是以参数的形式传入方法的话parametrize有个规则,就是需要加上indirect=True,这样方法名login_r就代表它return回来的数据,也就是登录名
2. 这是@pytest.mark.xfail的一个用法,如果使用arise NameError,则会抛出一个异常,前面的x代表的不是真正的fail或pass,一般用于标注当前这个用例还没有实现或者是个预留的测试用例。

图片


看到其他同学冒泡排序的代码,想请问老师,参数和数组名不一样为什么也可以运行成功?

关闭