UI自动化测试-pytest框架(一)

发表于:2023-2-27 09:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:东方不败就是我    来源:CSDN

  在进行UI自动化测试的时候,我们需要工具来对测试用例进行收集,执行,标记,参数化。pytest就是这样一个工具。
  pytest实际是python的一个单元测试框架,其他还有如unittest等,它可以实现按照规则搜索测试用例,对测试用例进行标记,如只执行L1级别的测试用例,测试执行用例失败后重新执行,测试用例的参数化等。
  pytest不仅适用于UI自动化测试,也适用于接口自动化,对python语言进行单元测试等。
  安装pytest
  可以使用pip或者pycharm方式进行安装
  打开pycharm,左上角File-settings-project:项目名-python interpreter,点击+,搜索pytest,然后install package。
  第一个pytest脚本
  import pytest
  class TestDemo:
      def test_01(self):
          assert 1==1  # 断言成功
      def test_02(self):
          assert 1==2  # 断言失败
  if __name__ == '__main__':
      pytest.main(['-s','test.py'])
  在文件输入如上代码。
  在这个脚本中,我们首先导入了pytest模块,然后定义了一个class,并定义了两个方法,在方法里用assert进行断言。
  assert是python自带的关键字。assert后面接一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败。可以看出,第一个方法里结果为true,第二个方法里结果为false。
  在main主入口里,调用pytest的main方法,并传入模块名(即文件名)。
  点击运行按钮,结果如下:
  由结果可以看出,一共收集了两个用例,其中一个运行成功(用.表示),一个运行失败(F表示),失败的原因是1!=2
  用例收集规则
  pytest按照一定的规则进行用例的收集。
  1. 模块名必须以test_开头或_test结尾
  这里适用于未指定模块时的收集,如果运行单个文件,在main里指定要执行的文件,则无论这个文件名是什么,都会被执行。
  如果在main里不指定模块,如只写pytest.main(),则pytest会默认从当前路径及其所有子目录中搜索py源文件,所有名字以test_开头或者以_test结尾的python源文件(.py文件)被认为是测试模块源文件,不符合这个命名规则的文件会被忽略。
  2. 测试类必须以Test开头且不能有init方法
  一个文件也可以只写测试方法,不写测试类。
  3. 测试方法必须以test开头
  在上面的示例脚本中,我们定义了两个test_开头的方法,所以收集了两个用例。非test开头的方法,会被pytest忽略。
  运行方式
  main函数运行
  我们可以在main入口中调用pytest的main方法来运行文件,如上例。
  不指定模块名
  pytest.main(['-s'])
  -s参数表示在控制台输出信息,当不指定模块名时,可以看到,收集了7条用例。
  指定模块名
   pytest.main(['-s','test.py'])
  当指定了模块名后,运行文件,只收集当前文件的两条用例。
  指定class
   pytest.main(["-s", "test.py::TestDemo"])
  我们也可以在模块名上加上指定的class名。
  命令行窗口运行
  不指定模块名
  打开terminal,进入目标目录,直接执行“pytest”即可自动寻找当前目录下的测试用例。
  指定模块名
  打开terminal,输入pytest+模块名,指定模块执行。
  pytest test.py
  指定函数名
  打开terminal,输入pytest+模块名+函数名,指定模块执行。
  pytest test.py::TestDemo
  test runner运行
  在File-Settings如图路径,设置default test runner为pytest,点击OK。
  再回到测试文件,可以看到类,方法前面都显示运行按钮,点击对应按钮,可以运行类,单独运行某个test。
  也可以在不写main函数的情况下,右键以pytest运行文件。注意在配置了runner后,执行不会进入main主入口。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号