• iOS自动化探索(七)自动化测试框架pytest


    这里我们单独来看下关于如何生存测试报告

    准备测试代码如下:

    #coding: utf-8
    
    import pytest
    
    @pytest.fixture()
    def login():
        print '输入账号、密码登录'
        
    def test_step_1(login):
        print '用例步骤1:登录之后其它动作111'
    
    def test_step_2(): #不需要登录
        print '用例步骤2: 不需要登录, 操作222'
    
    def test_step_3(login):
        print '用例步骤3:登录之后其它动作333'
    

    生成JunitXML 格式的测试报告

    JunitXML报告是一种很常用的测试报告,比如可以和Jenkins进行集成,在Jenkins的GUI上显示Pytest的运行结果,非常便利。
    运行完case后可以到report路径下去查看相应的xml文件,也可以在PyCharm打开该xml文件查看。

    执行命令:

    pytest -v test_smtpsimple.py --junitxml=log.xml

    运行结果:

    (wda_python) bash-3.2$ pytest -v test_smtpsimple.py --junitxml=log.xml
    ========================================================== test session starts ===========================================================
    platform darwin -- Python 2.7.15, pytest-4.1.0, py-1.7.0, pluggy-0.8.0 -- /Users/jackey/Documents/iOS/code/iOS-Auto/MyPyEnv/wda_python/bin/python2.7
    cachedir: .pytest_cache
    rootdir: /Users/jackey/Documents/iOS/code/iOS-Auto/Agent_Test, inifile:
    collected 3 items                                                                                                                        
    
    test_smtpsimple.py::test_step_1 PASSED                                                                                             [ 33%]
    test_smtpsimple.py::test_step_2 PASSED                                                                                             [ 66%]
    test_smtpsimple.py::test_step_3 PASSED                                                                                             [100%]
    
    ---------------------------- generated xml file: /Users/jackey/Documents/iOS/code/iOS-Auto/Agent_Test/log.xml ----------------------------
    ======================================================== 3 passed in 0.02 seconds ========================================================
    (wda_python) bash-3.2$ 

    生存的log.xml:

    <?xml version="1.0" encoding="utf-8"?><testsuite errors="0" failures="0" name="pytest" skips="0" tests="3" time="0.023"><testcase classname="test_smtpsimple" file="test_smtpsimple.py" line="8" name="test_step_1" time="0.00126314163208"><system-out>输入账号、密码登录
    用例步骤1:登录之后其它动作111
    </system-out></testcase><testcase classname="test_smtpsimple" file="test_smtpsimple.py" line="11" name="test_step_2" time="0.000802755355835"><system-out>用例步骤2: 不需要登录, 操作222
    </system-out></testcase><testcase classname="test_smtpsimple" file="test_smtpsimple.py" line="14" name="test_step_3" time="0.00115084648132"><system-out>输入账号、密码登录
    用例步骤3:登录之后其它动作333
    </system-out></testcase></testsuite>

    生成result log格式的测试报告

    (wda_python) bash-3.2$ pytest -s -v test_smtpsimple.py --resultlog=log.txt
    ========================================================== test session starts ===========================================================
    platform darwin -- Python 2.7.15, pytest-4.1.0, py-1.7.0, pluggy-0.8.0 -- /Users/jackey/Documents/iOS/code/iOS-Auto/MyPyEnv/wda_python/bin/python2.7
    cachedir: .pytest_cache
    rootdir: /Users/jackey/Documents/iOS/code/iOS-Auto/Agent_Test, inifile:
    collected 3 items                                                                                                                        
    
    test_smtpsimple.py::test_step_1 输入账号、密码登录
    用例步骤1:登录之后其它动作111
    PASSED
    test_smtpsimple.py::test_step_2 用例步骤2: 不需要登录, 操作222
    PASSED
    test_smtpsimple.py::test_step_3 输入账号、密码登录
    用例步骤3:登录之后其它动作333
    PASSED
    
    ============================================================ warnings summary ============================================================
    /Users/jackey/Documents/iOS/code/iOS-Auto/MyPyEnv/wda_python/lib/python2.7/site-packages/_pytest/resultlog.py:39
      /Users/jackey/Documents/iOS/code/iOS-Auto/MyPyEnv/wda_python/lib/python2.7/site-packages/_pytest/resultlog.py:39: PytestDeprecationWarning: --result-log is deprecated and scheduled for removal in pytest 5.0.
      See https://docs.pytest.org/en/latest/deprecations.html#result-log-result-log for more information.
        _issue_warning_captured(RESULT_LOG, config.hook, stacklevel=2)
    
    -- Docs: https://docs.pytest.org/en/latest/warnings.html
    ================================================== 3 passed, 1 warnings in 0.01 seconds ==================================================
    (wda_python) bash-3.2$ 

    现在回提示过期, 生存的Log.txt

    . test_smtpsimple.py::test_step_1
    . test_smtpsimple.py::test_step_2
    . test_smtpsimple.py::test_step_3

    可以改成这样:

    pytest -s -v test_smtpsimple.py > log.txt

    生存的log.txt为

    ============================= test session starts ==============================
    platform darwin -- Python 2.7.15, pytest-4.1.0, py-1.7.0, pluggy-0.8.0 -- /Users/jackey/Documents/iOS/code/iOS-Auto/MyPyEnv/wda_python/bin/python2.7
    cachedir: .pytest_cache
    rootdir: /Users/jackey/Documents/iOS/code/iOS-Auto/Agent_Test, inifile:
    collecting ... collected 3 items
    
    test_smtpsimple.py::test_step_1 输入账号、密码登录
    用例步骤1:登录之后其它动作111
    PASSED
    test_smtpsimple.py::test_step_2 用例步骤2: 不需要登录, 操作222
    PASSED
    test_smtpsimple.py::test_step_3 输入账号、密码登录
    用例步骤3:登录之后其它动作333
    PASSED
    
    =========================== 3 passed in 0.01 seconds ===========================

    生成Html格式的测试报告

    html格式的测试报告在浏览器观看效果很好,还可以把这些测试报告放在Web服务器上。
    首先,需要安装pytest-html插件。

    pip install pytest-html

    使用指令:

    pytest -s -v test_smtpsimple.py --html=log.html

    运行结果:

    (wda_python) bash-3.2$ pytest -s -v test_smtpsimple.py --html=log.html
    ========================================================== test session starts ===========================================================
    platform darwin -- Python 2.7.15, pytest-4.1.0, py-1.7.0, pluggy-0.8.0 -- /Users/jackey/Documents/iOS/code/iOS-Auto/MyPyEnv/wda_python/bin/python2.7
    cachedir: .pytest_cache
    metadata: {'Python': '2.7.15', 'Platform': 'Darwin-17.0.0-x86_64-i386-64bit', 'Packages': {'py': '1.7.0', 'pytest': '4.1.0', 'pluggy': '0.8.0'}, 'Plugins': {'html': '1.20.0', 'metadata': '1.8.0'}}
    rootdir: /Users/jackey/Documents/iOS/code/iOS-Auto/Agent_Test, inifile:
    plugins: metadata-1.8.0, html-1.20.0
    collected 3 items                                                                                                                        
    
    test_smtpsimple.py::test_step_1 输入账号、密码登录
    用例步骤1:登录之后其它动作111
    PASSED
    test_smtpsimple.py::test_step_2 用例步骤2: 不需要登录, 操作222
    PASSED
    test_smtpsimple.py::test_step_3 输入账号、密码登录
    用例步骤3:登录之后其它动作333
    PASSED
    
    --------------------------- generated html file: /Users/jackey/Documents/iOS/code/iOS-Auto/Agent_Test/log.html ---------------------------
    ======================================================== 3 passed in 0.03 seconds ========================================================
    (wda_python) bash-3.2$ 

    生存的log.html用浏览器打开:

  • 相关阅读:
    Maven的声明周期(Lifecycle )和命令(Phase)
    Java并发之线程异常捕获
    Java并发之需要了解但不能太依赖的东东
    ejs使用
    node.js BootStrap安装
    div+css关于overflow 动态滚动效果
    myBatis 参数配置
    jQuery Ajax请求提交 后台getParameter接收不到数据
    mysql+mybatis 插入可递增字段库表操作
    CSS浮动讲解好文章推荐
  • 原文地址:https://www.cnblogs.com/zhouxihi/p/10288779.html
Copyright © 2020-2023  润新知