• 0
  • 0
分享
  • 测试框架-pytest(实现基础接口自动化常用的知识点)
  • 豆秸 2022-07-08 08:59:33 字数 2040 阅读 1781 收藏 0

pytest是python自带的单元测试框架,是unitest的升级版本。使用框架的目的是“提高效率”,可以实现:

  1. 环境初始化和数据清除

  2. 定制化执行测试用例

  3. 配置--分布式执行

  4. 自带html报告(可根据需要使用allure报告)

安装:

pip install pytest

pip install pytest-html    原生态报告模版

查看安装结果:pip show pytest

注意事项:

使用pytest框架,默认识别“test”,所以:

1.测试用例必须以test开头,例如:test_A

2.测试类必须以Test开头(第一个字母大写)

3.对应的py文件必须以test_开头,或者_test结尾的;

4.断言必须使用assert

5.方法必须使用test开头

import pytest  
def test_A():
    print('开始执行测试用例A')
    assert 1+2==3
if __name__=='__main__':
    pytest.main(['test_func.py',‘-s’])   #test_func.py是当前的文件,-s为输出信息,否则不会打印出print信息

pytest参数化

数据驱动,即pytest有自带的装饰器可以实现参数化,参数化有两种

1.  单个参数写法:@pytest.mark.parametrize('inData',[10,20])  #第一个参数为变量名称,第二个为参数值。不需要设置循环读取参数值,因为pytest的装饰器会自动循环读取

2. 多个参数写法:(参数值以元组形式写)@pytest.mark.parametrize('第一个参数名称,第二个参数名称'),[(参数1值,参数2值),(参数1值,参数2值)]

import pytest
@pytest.mark.parametrize('a,b',[(1,2),(4,5)])
def test_a(a,b):
    print("开始执行测试用例")
    assert a+b==3
    print(“测试用例执行结束”)
if __name__=="__main__"
    pytest.main(['test.py','-v','-s'])

pytest运行指定测试用例

1.运行当前文件夹内的所有测试用例:pytest.main([文件夹名称/])

2.运行当前文件内的测试用例:pytest.main(['test.py'])

3.运行当前文件内的指定测试用例:pytest.main(['test.py::test_case'])

4.运行当前文件内指定类下的所有测试用例:pytest.main(['test.py::Test_class'])

5.运行当前文件内指定类下的指定测试用例:pytest.main(['test.py::Test_class::test_case'])

问题:pycharm运行脚本时,python自动识别pytest框架,此时运行时会出现“run pytest in xxx.py",此时默认执行当前文件内的所有test用例。pytest.maini()设置不生效

解决办法:

设置pytest.main([])后,点击pycharm的顶部菜单栏run-选择run xxx.py。这个时候就是按照pytest.main设置的模式执行指定测试用例

扩展:

在代码页面选中其中一条测试用例-就会出现:run pytest xxx.testcaseA,此时仅运行选中的测试用例(xxx为py文件名称)

pytest运行命令的常用参数说明 

     -v:说明:可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等

      -S:说明:输入我们用例中的调式信息,比如print的打印信息等

     -m :说明:执行特定的测试用例,”标记“

     -k: 说明:执行用例包含“关键字”的用例 ,"关键字"

     -q: 说明:简化控制台的输出

     --lf:当一次用例执行完成后,如果其中存在失败的测试用例,那么我们可以使用此命令重新运行失败的测试用例

     --ff:如果上次测试用例出现失败的用例,当使用--ff后,失败的测试用例会首先执行,剩余的用例也会再次执行一次

--html:生成原生态的测试报告

练习:

执行测试用例时,同步打印出脚本内的print信息:pytest.main(['-s test.py::test_caseA','--html=../report/xt.html'])

接口实战

测试用例一般来自:excel、yaml文件

1.从excel读取body,并形成一个列表list_data=[{第一个用例内容},{第二个用例内容}]

2.使用pytest装饰器,自动循环读取用例@pytest.mark.parametrize('data',list_data)

3.通过bat文件一件执行

4.allure展示报告

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   前提条件  1、所有测试机上保证jdk版本一致,jmeter版本一致;  2、所有测试机关闭防火墙。  分布式环境搭建  选择一台机器作为控制机,其余机器全部作为负载机。  控制机设置  1、编辑bin目录下jmeter.properties文件:  · 设置server_port,默认为1099,可修改;需去掉server_port前的“#”符号  · 设置remote_hosts=控制机IP:端口号,负载机IP:端口号,其它负载机IP:端口号  · 设置完成后保存文件。  备注:若控制机不执行测试,则remote_hosts中不需要填写控制机IP。  2、在jmet...
            0 0 1548
            分享
          •   工具介绍  Playwright是微软公司开发的一款非常强大的开源自动化测试工具。之所以强大有以下原因:  1. 支持所有主流浏览器:Chrome、Firefox、Safari、MS Edge。  2. 支持无头模式和有头模式运行。  3. 提供同步、异步的API,可以结合Pytest使用。  4. 支持浏览器端的自动化脚本录制。  5. 针对Python语言的自动化工具。  6. 支持的操作系统有Linux、Mac OS以及Windows。  7. 可以使用docker进行运行环境的安装。  安装环境  1. 安装Python,Playwright需要3.7及以上版本的Python,因此...
            12 13 4188
            分享
          •   版权声明:本文作者 优测团队测试专家 郑凯泽 南明玮。 探索性测试是对常规的系统测试、新需求测试及专项测试的重要补充,往往能在短时间内发现更多的问题,一起来看看优测测试专家的分享吧~  一、背景 优测团队长期承接腾讯社交产品、办公产品,如大家所熟知的腾讯文档、QQ等产品的测试服务工作。在用户规模日益增长的背景下,探索性测试是对常规的系统测试、新需求测试及专项测试的重要补充。 经实践验证,该方法可在短时间内发现更多的问题,通过新的思路、新的方法,找到在系统测试阶段未发现的“漏网之鱼”。 二、探索策略 1...
            0 0 1342
            分享
          • 在带一些测试新人的时候,发现大家的测试比较随意,基本上是看到哪测哪,提交的bug基本都是一眼可见的那种,很少带入用户实际使用场景,或者有两到三步的操作都是少之又少的,这样的版本上线之后会有什么问题呢,就是用户刚下载这个软件使用时ok的,但是随着使用次数增多,使用时间延长,一些问题逐渐浮出水面。如果这些问题是必现问题还好,研发还好解决,如果是偶现的,那就不好搞了,用户是不会愿意或者说没有时间去帮你复现问题的。因此,我们强调,测试期间,一定要有章法,保证能发现并解决大部分bug。当开发发布一个全新版本时,测试就要开始干活了,这个时候,bug一般都是比较多的,好像随便测测都能找到不少问题。但是为了报...
            5 5 7719
            分享
          • android app自动化测试框架Appium资料整理1 自动化测试1.1 自动化测试简介自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。从广义上来讲,一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化测试。从狭义上来讲,自动化测试就是通过工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。1.2 自动化测试的优点提高效率:通过运行自动化测试脚本,就可以在夜间、午休等时间进行测试用例回归,实现无人值守测试,大大提高了测试效率。避免重复工作:每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全...
            11 11 1765
            分享
      • 51testing软件测试圈微信