首页 > 编程知识 正文

pytest搭建测试框架,pytest自动化测试框架

时间:2023-05-03 22:17:15 阅读:197535 作者:4565

目录

一、环境部署

二、用例设计原则

三、判断用例执行结果的方法

四、yaml配置文件

五、常用的执行用例的方法

六、测试报告的生成


一、环境部署

首先Python环境是必须要装的,其次是pycharm和pytest库。其它可以按需要选择安装,后面可能会用到:

 

库/插件/工具

安装方法

用途

1

安装python 3.x

  

2

安装pycharm

 

 

3

安装pytest库

pip install pytest

pytest库

4

安装yaml

pip install pyyaml

配置文件

5

安装pytest -html

pip install pytest-html

生成html报告

6

安装allure

pip install allure-pytest

描述测试用例

 

二、用例设计原则

主要有四点:

1、测试用例的文件名以test_*.py或*_test.py命名;

2、方法或函数以test_开头;

3、类以Test_开头;

4、所有的包必须要有__init__.py文件。

另外,想要直接在pycharm上执行测试用例,用例后必须加上:

if __name__ == "__main__": pytest.main('-q 用例.py')

 

三、判断用例执行结果的方法

pytest通过assert断言来设置用例的预期执行结果,并判断实际执行结果是否与之一致,使用方法如下:

1、测试大小是否相等, assert可以使用直接使用“==”、“!=”、“<”、“>”、“>=”、"<=" 等符号来比较相等、不相等、小于、大于、大于等于和小于等于,例如:

assert 1 != 2

2、测试包含和不包含,assert 可以直接使用 in 和not in 来比较包含与不包含,例如:

 assert a in b

3、测试true或false,assert可以不需要任何辅助符号,直接判断对象是否为ture, assert not 用于判断是否为false,例如:

assert 1

断言失败一般可以看到以下输出,代表用例的执行结果failure与我预期的success不符,即这条用例执行失败:

 

当然,也可以如下所示,指定断言失败的返回信息:

assert a % 2 == 0, "值为奇数,应为偶数"

除此之外,pytest可以在断言的比较中提供丰富的上下文信息。例如:

def test_set_comparsion(): set1 = set("111") set2 = set("222") assert set1 == set2   四、yaml配置文件

1、yaml(Yet Another Markup Language):是一种专门用来写配置文件的语言。

2、yaml的基本语法规则:

      大小写敏感;

      使用缩进表示层级关系(注意:这里只允许使用空格来表示缩进,空格数目不重要,不允许使用Tab键);

      相同层级的元素左侧需对齐;

      使用 # 表示注释;

3、yaml支持的三种数据结构:

      对象:键值对的集合,又称为映射(mapping)/ wndxbc(hashes) / 字典(dictionary);

      数组:一组按次序排列的值,又称为序列(sequence) / 列表(list);

      纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期;

4、读取和转换方法

      用open方法读取yaml文件的数据;

      再通过load方法转成字典;

 

      比如说,我把Linux虚拟机的一些信息放到config.yaml文件里:

hostname: '10.2.12.87' #ipport: 22username: 'root'password: '123456'

              那么在用例中,就可以直接读取config.yaml文件,使用这些数据:

file = open("/TestData/config.yaml", encoding='utf-8')res = yaml.load(file, Loader=yaml.Fullloader)hostname = res['hostname']port = res['port']username = res['username']password = res['password']

 

五、常用的执行用例的方法

1、执行某个文件夹下的所有用例:

pytest 文件夹名/

2、执行单条用例

pytest 用例.py

3、-k EXPRESSION按关键字匹配

pytest -k 'test_method or test_other'

将运行名称包含'test_method' 或 'test_other'的所有方法或类

4、-m MARKEXPR标记表达式

将运行用@ pytest.mark.slow装饰器修饰的所有测试

5、-v 增加冗余的用例执行输出;-q减少冗余的用例执行输出

6、-x 一旦遇到错误立即停止执行

7、--maxfail=num 错误达到一定的数量时停止执行

8、--lf(--last-failed)只运行上次运行失败的用例

9、--ff(--failed-first)优先执行上次运行失败的用例,再运行其他用例

10、-s 打印用例里print的内容

 

六、测试报告的生成

pytest-html模块用于生成测试报告,如果想生成测试报告,可以按照这样的方法执行用例:

pytest 用例.py --html=/路径/report.html

或者这样执行,可以把css样式合并到html里:

pytest --html=/路径/report.html --self=contained-html

报告的效果是这样的:

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。