• 0
  • 0
分享
  • 测试框架-pytest(实现基础接口自动化常用的知识点)
  • 豆秸 2022-07-08 08:59:33 字数 2040 阅读 1392 收藏 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展示报告

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •  最常见的XSS检测代码:<script>alert(1)</script> // 调用JavaScript语句 <img src=x onerror=alert(1)> // src是错误的 就会调用error函数 <a href=javascript:alert(1)> // 点击a即可触发  实际应用中web程序往往会通过一些过滤规则来防止代有恶意代码的用户输入被显示。当上述代码被注入到输入框或者URL参数中时,可能会成功也可能会失败,如果失...
            0 0 698
            分享
          •   近几年来随着人工智能、物联网、大数据、云计算等IT新产业快速发展,各行业对软件产品质量要求越来越高。互联网行业快速发展以及技术快速迭代的需求下,期望通过IT培训“借风起火”的人群愈加庞大。BAT、美团、字节跳动、动因等企业纷纷打出高薪招聘软件测试人才。  科技信息时代,万物瞬息而变,而IT行业作为其核心支柱,必然需要不断创新。与此同时企业对测试人才也提出了新的需求,如何应对未来的技术变革,是每个测试人员值得深思的问题。  很多人刚从事软件测试这个行业的时候意气风发,对未来充满无限憧憬。但是摸爬滚打几年以后,渐渐的发现这个行业不像当初了解的那么美好。比起网上很多鼓吹自动化、性能测试多么有前途...
            0 0 1074
            分享
          •   微信 Andoid 6.5.10 开始,微信官方提供了 Trace 导出工具,开发者可以在开发者工具 Trace Panel 中使用该功能。  1、安装 adb 工具  安装 brew:  /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"   安装完成验证: brew --version  安装 adb: brew cask install android-platform-tools  运行ad...
            0 0 4976
            分享
          • 一、自己电脑下载OBS免费直播工具用来推流,配置如下:1、添加来源:点击 + ,选择 “显示器采集”2、点击设置,设置推流地址和串流密钥,例如:rtmp://192.168.10.129/live,密钥:/home那么我们后面完成所有工作后对应的播放地址如下:链接类型链接rtmprtmp://192.168.10.129:1935/live/homehttp/m3u8http://192.168.10.129:8083/live/home.m3u8二、搭建SRS服务1、下载SRS到服务器并解压;2、进入thunk目录cd srs/trunk3、编译SRS,会自动安装依赖./confi...
            0 0 2158
            分享
          • 在互联网行业中,永无止境的讨论主题之一是:敏捷与DevOps。对于这两个概念来说,过程彼此不同;但是它们仍然有一些相似之处。敏捷敏捷方法论是一种实践,它促进整个项目的 SDLC(软件开发生命周期)的开发和测试的持续迭代。在敏捷方法中,开发和测试活动是同时进行的,这涉及到 SDLC 过程中开发和测试的持续迭代。敏捷宣言强调的敏捷软件开发的四个核心价值是:个体和互动高于流程和工具工作的软件高于详尽的文档客户合作高于合同谈判响应变化高于遵循计划敏捷是一个软件开发过程,它符合敏捷宣言的品质和标准。它建立在迭代开发的基础上,以跨职能团队的合作为中心,以获得所需的解决方案。敏捷开发过程将产品分解成小块并将...
            0 0 520
            分享
      • 51testing软件测试圈微信