不知名的测试员 2021-09-25 21:49 采纳率: 0%
浏览 54

pytest 执行同一个py文件时,有时候是找到0个用例或部分,有时候全部用例都搜索到了。两次运行,环境脚本并无任何改动。但是有时候就是找不到用例,有知道怎么解决的吗?

img

img

上面是两次运行的结果。
下面是我的测试代码,还望了解的朋友帮忙解惑一下。不胜感激。


import time
import pytest
from ddt import ddt,data,unpack

@ddt
class Test_learn():

    # @pytest.mark.run(order=4)
    def test_t1(self):
        """用例描述:这是用例1"""
        print("第一个测试用例T1")

    # @pytest.mark.run(order=3)
    def test_t2(self):
        print("第二个测试用例T2")

    # @pytest.mark.run(order=2)
    def test_t3(self):
        time.sleep(1)
        print("测试用例3,耗时操作")

    # @pytest.mark.run(order=1)
    def test_t4(self):
        """用例描述:执行顺序为1的用例."""
        time.sleep(1)
        print("测试用例4,耗时操作")

    @pytest.mark.skip
    def test_t5(self):
        """用例描述:这是一个被跳过的用例."""
        print("用例5:被标记跳过的用例,不会执行.")

    def test_t6(self,setUp):  # 把前置操作当成参数传入.
        """?"""
        print("用例6:有前置函数的.")


    @pytest.mark.parametrize('ar1,ar2',[('a1','a2'),('a12','a22')],ids=['用例1','case2'])
    def test_t7(self,ar1,ar2):
        print(f"ar1:{ar1},ar2:{ar2}")

    @data('t8_测试','t8_2','t8_3')
    def test_t8(self,ar1="默认"):
        print(f"参数ar1----->{ar1}")
        print("打印了吗????????????")


if __name__ == '__main__':
    pytest.main()
  • 写回答

1条回答 默认 最新

  • 咕泡-三木 2021-09-26 14:02
    关注

    1. 恭喜你,踩了一个坑

    踩坑不要紧,从坑里爬出来就是进步

    首先我猜你是通过右键-Run执行的,
    改一下代码

    if __name__ == '__main__':
        1/0    #  错误的语法,如果执行会报错
        pytest.main()
    
    如果不报错的话,说明书if下面的代码根本没执行,也就是说根本没执行 pytest.main()
    

    2. pycharm的坑

    pycharm对python有额外的支持,通过一个特殊的runner,实现unittest 和 pytest单个用例的执行
    比如截图中的 js_pytest_runner.py

    img

    注意两张图片的细节,都不是执行你写代码的py文件,而是执行你文件中的用例
    这就是为什么在步骤1中修改代码不报错的原因

    3. 解决办法

    最简单的办法就是在命令执行的文件,这样可以绕过jb的runner,确保不会出现其他的问题,比如

    python  test_sanmu.py
    

    还有一种方法就是修改 Run设置
    你打开之后应该会看到pytest的图标,删掉,添加一个python的图标,最基本的方式执行这个文件
    这样修改之后就可以【右键-Run】执行这个文件了

    img

    4. 多多交流

    若有帮助 记得点击【采纳】
    也可以关注我得公众号测试开发研习社,专注基于Python的开发及测试技术

    评论

报告相同问题?

问题事件

  • 创建了问题 9月25日

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记