pytest中常用运行用例的方式

时间:2022-02-28 22:24:25

1.首先,我们要执行用例,我们要先了解pytest中的Marker(标签) 机制

    对于Pytest,我们可以在每一个模块,每一个类,每一个方法和用例前都加上marker,那样我们在pytest运行的时候就可以只运行带有该mark标签的模块、类、用例。

    这样的话可以方便我们选择执行自动化时,是选择执行全部用例、某个模块用例、某个流程用例、某个单独用例,总之就是某个单独的标签下所有用例。

    让我们根据测试方向、时间、选择调试来执行对应的marker。

2.打marker标签的方法。

1). 注册标签。

   在项目目录的下级新建一个配置文件: pytest.ini

   如图中一样,很简单。前面是你标签名称,后面是对标签的注释(注释可以不写)

    如图中我给项目分了smoke(冒烟)、demo(类)、login(登录)、test(调试),之后如果有需要我会根据情况继续增加

  pytest中常用运行用例的方式

2). 打marker标签。

打标签方法有2种

第一种:

  @pytest.mark.标签名

第二种:

  pytestmark = pytest.mark.标签名

第一种打标签的位置可以在类名前,方法前

第二种打标签的位置可以在类中、方法中

一个类或方法可以打多个不同的标签,标签之间不会冲突。

上图:

pytest中常用运行用例的方式

如图,执行pytest就可以根据标签名来执行你想执行的用例

pytest中常用运行用例的方式

也可以在Terminal(IDE中)、或cmd.exe中用命令来执行 pytest -m 标签名 来运行

pytest中常用运行用例的方式

 

当然 -m 只代表执行的标签名,pytest中 - 后面可以接很多命令,需要大家根据需要自己添加,

而后面 --html,--alluredir 则为运行后生成对应的HTML报告或allure报告,用于Jenkins集成。

3).打完标签后确实方便了许多,但也还有些繁琐。特别是调试的时候,我是在需要调试的用例方法名前面打上test标签,

然后执行 pytest -m test ,这样确实方便用于调试。可是有时候记性不好,调试完后忘记取消该标签,

下一次其他用例调试前打上test标签,会把之前未取消标签的用例一并运行,有点糟心。

所以又搜寻了一下其他方法记录一下: 

  1.选择运行特定的某个类

  pytest -v test_pytest_markers.py::TestClass

  2.选择运行特定的某个测试用例

  pytest -v test_pytest_markers.py::TestClass::test_method

  3.多种组合

  pytest -v test_pytest_markers.py::TestClass test_pytest_markers.py::test_send_http

  4.用-k进行关键字匹配来运行测试用例名字子串

  pytest -v -k http test_pytest_markers.py

配合-m标签使用效果更佳哦:

pytest中常用运行用例的方式