在pytest框架中,编写测试用例有如下约束:

  • 所有的测试用例文件名都需要满足test_*.py格式或*_test.py格式。
  • 在测试用例文件中,测试类以Test开头,并且不能带有__init__方法,否则pytest不会执行该class。
  • 在测用例的class中,可以包含一个或多个test_开头的方法。

在满足上面约束后,有两种方式来执行测试用例:

  1. 主函数方式
  2. 命令行方式

主函数方式

执行所有用例

使用pytest.main()方式执行用例,如果不加参数,会自动从当前目录及子目录中寻找符合上述约束的测试用例来执行。

import pytest

class TestPractice:

    def test_01(self):
print("执行用例1") def test_02(self):
print("执行用例2") if __name__ == '__main__':
pytest.main()

执行结果

从上面的结果中,可以看到,print()打印的信息未显示,可以使用-s参数显示打印信息

...(省略)

if __name__ == '__main__':
pytest.main(["-s"])

注意参数格式是列表

上面的pytest.main()是写在用例文件中的,我们可以将其独立出来,结构如下

执行指定用例集

每个测试用例都有一个唯一的nodeid,节点ID格式为  “相对于执行文件的用例文件路径::类名::用例名”。可以使用-v参数,查看执行的详细信息,详细信息包含了用例的节点ID。

在知道了用例的节点ID后,只需要将用例的节点ID以参数的形式传入,就可以执行指定用例了。

执行指定用例

执行指定用例类

执行指定用例文件或指定路径

命令行方式

命令行方式与主函数相差不大,区别是主函数是以列表添加参数,命令行是以空格添加参数。

配置文件修改约束条件

文章开头强调了测试用例的约束条件,这些约束条件是可以通过pytest.ini来修改的,下面是常用的配置字段:

[pytest]
# 命令行参数,用空格分隔
addopts = -v -s # 读取测试用例的起始文件夹
testpaths = ./testcase # 配置搜索的模块文件名称
python_files = test*.py # 配置搜索的测试类名
python_classes = Test # 配置搜索的测试方法名
python_functions = test

复制上面信息,在项目根目录创建pytest.ini,将复制的信息粘贴进去,然后执行用例。

注意:此时会报错:UnicodeDecodeError: 'gbk' codec can't decode

原因是我们在配置文件中使用了中文,解决方法有两种:

  • 删除文件中的中文
  • 修改iniconfig中的代码

点击倒数第二行的报错,在其前面一行代码的open()函数中增加 encoding='utf-8' 就能解决问题

解决报错问题后,就可以通过修改配置文件执行我们想要执行的用例了,比如,执行类名以A开头用例以b开头的用例

Pytest_测试用例的执行方式(2)的更多相关文章

  1. PyCharm上unittest 测试用例两种执行方式

    每次讲到unittest测试框架的时候,经常有同学在群里反映,为啥我的运行不是按照我往suite里添加的用例顺序执行的,为什么别人的能跑出来报告,我的就不行... 当然,首先确认代码是OK的,如果代码 ...

  2. Robot Framework(十) 执行测试用例——测试执行

    3.2测试执行 本节描述如何执行从解析的测试数据创建的测试套件结构,如何在失败后继续执行测试用例,以及如何正常停止整个测试执行. 3.2.1执行流程 执行套房和测试 设置和拆卸 执行顺序 3.2.2继 ...

  3. 第9章 Shell基础(1)_Shell简介和脚本执行方式

    1. Shell概述 1.1 Shell简介 (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编 ...

  4. Windows服务定时执行方式

    采用System.Timers.Timer 间隔固定时间执行 方式一:间隔固定的时间执行一次,关键代码: protected override void OnStart(string[] args) ...

  5. shell各种执行方式区别

    shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别 原文出处:http://blog.csdn.net/dance_rise/article/deta ...

  6. Linux下的Source命令及脚本的执行方式解析

    Linux Source命令及脚本的执行方式解析 http://blog.csdn.net/wangyangkobe/article/details/6595143 当我修改了/etc/profile ...

  7. SQL Select count(*)和Count(1)的区别和执行方式及SQL性能优化

    SQL性能优化:http://www.cnblogs.com/CareySon/category/360333.html Select count(*)和Count(1)的区别和执行方式 在SQL S ...

  8. Delphi中ADO异步执行方式

    当ADO开始处理数据后,应用程序必须等到ADO处理完毕之后才可以继续执行.但是除了同步执行方式之外,ADO也提供了异步执行的方式,允许当ADO处理时,应用程序仍然能够先继续执行.而当ADO处理数据完毕 ...

  9. 探讨 : Host在IIS上的WCF Service的执行方式

    一个WCF请求由两个线程来完成 运行在IIS上的WCF service, 你可能会注意到一个比较有趣的现象. 当WCF service接收到一个请求时, 这个请求实际上会有两个线程在执行这个请求. 一 ...

随机推荐

  1. Google Guava 常用集合方法

    /** * Author: momo * Date: 2018/6/7 * Description: */ public class ListTest { public static void mai ...

  2. 使用cookie记录用户上次访问网页的时间,并返回到页面

    package com.hopetesting.cookie;import javax.servlet.ServletException;import javax.servlet.annotation ...

  3. Snort 入侵检测系统

    Snort 入侵检测系统 一.实验目的 1.掌握snort IDS工作原理 2.应用snort 三种方式工作 二.实验环境 系统环境:Windows环境, kali环境 三.实验原理 1.snort ...

  4. 车载以太网第二弹|测试之实锤-1000BASE-T1 IOP测试实践

    背景 车载以太网通信技术在汽车行业的应用速度远超预期,去年本土OEM已经上市了应用100BASE -T1的车型.今年,应用1000BASE -T1的车型预计也将会量产上市.针对测试而言,带来另外一个难 ...

  5. Mac 下安装Phonegap开发环境

    Mac 下安装Phonegap开发环境 2014.09.11  星期四 评论 0 条    阅读 5,613 次 作者:野草 标签:phonegap ios mac 什么是Phonegap呢?Phon ...

  6. 什么是甘特图(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 名词解释:"甘特图(Gantt Chart)是一种图形化的项目活动及其他相关系统进度情况的水平方向的条状图.&q ...

  7. 安全防御之防xss、SQL注入、与CSRF攻击

    XSS攻击 个人理解,项目中最普通的就是通过输入框表单,提交js代码,进行攻击例如在输入框中提交 <script>alert("我是xss攻击");</scrip ...

  8. AT5221 [ABC140C] Maximal Value 题解

    Content 有一个长度为 \(n\) 的数列 \(A\) 未知,已知一个数列 \(B=\{b_1,b_2,...,b_{n-1}\}\),且满足 \(b_i\geqslant \max\{a_i, ...

  9. AcWing1264. 动态求连续区间和 (树状数组做法)

    1.题目 给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和. 输入格式 第一行包含两个整数 n 和 m,分别表示数的个数和操作次数. 第二行包含 n ...

  10. mysql报错:You do not have the SUPER privilege and binary logging is enabled

    MySQL出现 You do not have the SUPER privilege and binary logging is enabled报错 解决方案: 1.用root用户登录:mysql ...