【pytest官方文档】解读-开发可pip安装的第三方插件( 二 )

  • pytest_collection_modifyitems: 重写搜集用例的这个钩子函数
  • 主要就是把搜集到的case的标题 , 描述和markers这3样写到 csv 文件中 。
    2. 测试插件代码插件主体代码写好了 , 我们需要自测一下 。
    按之前的话 , 可以直接把插件代码写到本地conftest文件里作为本地代码直接调用测试即可 。
    不过 Pytest 附带一个名为pytester的插件 , 它可以帮助我们为插件代码编写测试 。这个插件在默认情况下是禁用的 , 所以在使用之前要先开启 。
    在 test 目录下的 conftest 文件中声明即可 。
    【pytest官方文档】解读-开发可pip安装的第三方插件

    文章插图
    接下来上插件测试代码 , 然后讲解一下相关用法:
    import pytestdef test_pingguo(pytester):"""Make sure that our plugin works."""pytester.makeini("""[pytest]markers =nightlyperformanceintegrationhighmediumlow""")pytester.makepyfile("""import pytest@pytest.mark.performancedef test_one():\"""test_one\"""assert False@pytest.mark.highdef test_two():\"""test_two\"""assert Truedef test_three():\"""test_three\"""assert Trueclass TestPingGuo():@pytest.mark.high@pytest.mark.performancedef test_a(self):\"""TestPingGuo.test_a , 测试\"""assert Falsedef test_b(self):\"""TestPingGuo.test_b测试\"""assert True""")# run all tests with pytestresult = pytester.runpytest("--testplan=testplan.csv")这里最重要的就是pytester提供的方法 , 比如上面用到的:
    • pytester.makeini:因为我的测试case上加了不同的 marker , 这些是需要注册在 ini 文件里的
    • pytester.makepyfile: 这里就是写的测试用例代码了
    其实就是在对应的方法里 , 写上我们的原生代码 , 只是需要被""" """包起来 , 当做字符串 , 然后 pytest 会自行解析我们的代码 , 在临时目录里创建对应的文件然后运行 。
    不仅如此 , 还可以创建其他的文件 , 比如conftest 。这是源码 , 有兴趣的可以进去一探究竟 。
    【pytest官方文档】解读-开发可pip安装的第三方插件

    文章插图
    pytester.runpytest("--testplan=testplan.csv")这里可以添加要执行的命令行参数 。
    运行测试
    直接运行测试代码 , 看下结果 。
    【pytest官方文档】解读-开发可pip安装的第三方插件

    文章插图
    注意我这里的文件也是被生成在了临时目录里 , 打开控制台输出的路径就可以找到 。
    【pytest官方文档】解读-开发可pip安装的第三方插件

    文章插图
    打开 csv 文件验证一下结果 , 输出正确 。
    【pytest官方文档】解读-开发可pip安装的第三方插件

    文章插图
    3. 打包回到项目根目录 , 命令行输入:
    python setup.py sdist build完成后会生成dist目录 , 下面就有对应的包 。
    【pytest官方文档】解读-开发可pip安装的第三方插件

    文章插图
    4. 上传 pypi没有账号的要先注册登录一下 , 记得要去对应填写的邮箱里点击激活认证才可以 。
    接着安装twine , 我能使用这个工具来上传 。
    pip install twine安装完成后就可以执行了上传:
    twine upload dist/*提示需要输入注册的账号和密码 , 最后完成上传 。
    【pytest官方文档】解读-开发可pip安装的第三方插件

    文章插图
    上传完成后就可以在pypi中打开自己的插件主页了 , 现在其他小伙伴也可以安装插件了 。

    经验总结扩展阅读