51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7080|回复: 0
打印 上一主题 下一主题

[原创] Pytest自动化测试探索

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:07
  • 签到天数: 1020 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2020-11-11 09:58:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    摘要:Pytest是成熟的功能齐全的Python测试工具,有助于编写更好的程序。
      一、Pytest基本知识
      参考官方文档翻译过来,了解一下Pytest知识点。
      1、Pytest中可以按节点ID运行测试。
      在命令行中指定测试方法的另一个示例:
    1. pytest test_mod.py::TestClass::test_method
    复制代码
     2、通过标记表达式运行测试
    1. pytest -m slow
    复制代码
    将运行用@Pytest.mark.slow装饰器装饰的所有测试。
      3、详细的总结报告

    4、分析测试执行持续时间
      要获取最慢的10个测试持续时间的列表,请执行以下操作:

    1. pytest --durations=10
    复制代码
    5、将测试报告发送到在线pastebin服务
      为每个测试失败创建一个URL:

    1. pytest --pastebin=failed
    复制代码
    为整个测试会话日志创建一个URL
    1. pytest --pastebin=all
    复制代码
    6、从python代码中调用Pytest
    1. pytest.main()
    复制代码
    注意:
      调用Pytest.main()将导致导入你的测试及其导入的任何模块。由于python导入系统的缓存机制,Pytest.main()从同一进程进行后续调用不会反映两次调用之间对这些文件的更改。因此,Pytest.main()不建议从同一进程进行多次调用(例如,以重新运行测试)。
      7、断言
      使用标准python?assert来验证python测试中的期望和值。
      8、conftest.py
      对于可能的值scope有:function,class,module,package或session。
      9、Pytest将建立一个字符串,它是用于在参数化fixture,例如每个fixtures测试ID。这些ID可以用于-k选择要运行的特定情况,并且当一个故障发生时,它们还将标识特定情况。使用Pytest运行--collect-only将显示生成的ID。
      10、使用直接测试参数化fixture
      给定测试文件的结构为:

    1. tests/

    2.     __init__.py

    3.     conftest.py

    4.         # content of tests/conftest.py

    5.         import pytest

    6.         @pytest.fixture

    7.         def username():

    8.             return 'username'

    9.         @pytest.fixture

    10.         def other_username(username):

    11.             return 'other-' + username

    12.     test_something.py

    13.         # content of tests/test_something.py

    14.         import pytest

    15.         @pytest.mark.parametrize('username', ['directly-overridden-username'])

    16.         def test_username(username):

    17.             assert username == 'directly-overridden-username'

    18.         @pytest.mark.parametrize('username', ['directly-overridden-username-other'])

    19.         def test_username_other(other_username):

    20.             assert other_username == 'other-directly-overridden-username-other'
    复制代码



    附件: 您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-19 06:29 , Processed in 0.065435 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表