zoukankan      html  css  js  c++  java
  • pytest-4-分布式运行与自定义顺序执行用例

    一、分布式运行

    这里分布式,是指起多个线程,听说使用到python协程的库,没有仔细研究。。。重点是我们能提升我们测试脚本运行的总体效率。

    1、首先安装库:pip install pytest-xdist

    了解 pytest-xdist 插件更多看这里:https://docs.pytest.org/en/3.0.1/xdist.html

    用法:pytest -n2   既是起两个进程

     2、测试脚本

    from selenium import webdriver
    import time
    
    def test1():
        driver = webdriver.Chrome()
        driver.get('https://www.cnblogs.com/gsxl/')
        print("get 广深小龙 博客园")
        print(driver.find_element_by_id("Header1_HeaderTitle").text)
        time.sleep(1)
        driver.quit()
        print("运行完毕,即将关闭...")
    
    def test2():
        driver = webdriver.Chrome()
        driver.get('https://www.cnblogs.com/gsxl/')
        print("get 广深小龙 博客园")
        print(driver.find_element_by_id("Header1_HeaderTitle").text)
        time.sleep(1)
        driver.quit()
        print("运行完毕,即将关闭...")
    
    def test3():
        driver = webdriver.Chrome()
        driver.get('https://www.cnblogs.com/gsxl/')
        print("get 广深小龙 博客园")
        print(driver.find_element_by_id("Header1_HeaderTitle").text)
        time.sleep(1)
        driver.quit()
        print("运行完毕,即将关闭...")

    运行命令:pytest -n2  test.py

     效果:直接两个线程跑前两条用例关闭后,再起一个线程跑最后一条用例。

    二、自定义顺序执行用例

    pytest-ordering 更多介绍:https://pytest-ordering.readthedocs.io/en/develop/

    1、首先安装库:pip install pytest-ordering

     2、测试代码:

    import pytest
    
    
    def test_4():
        print(44444)
    
    
    @pytest.mark.run(order=2)
    def test_1():
        print(11111111111)
    
    
    @pytest.mark.run(order=1)
    def test_2():
        print(22222)
    
    
    # @pytest.mark.run(order=3)
    def test_3():
        print(33333333)

    结果顺序为:test2 → test1 → test4  → test3

    test2设置的是1顺序,test1设置的是2顺序,test4、test3没有设置顺序,便按代码的顺序,既会先运行test4。

    三、前面二者结合能行吗?

    我们直接来实践吧,GOGOGO~

    测试代码:

    from selenium import webdriver
    import time, pytest
    
    @pytest.mark.run(order=3)
    def test1():
        driver = webdriver.Chrome()
        driver.get('https://www.cnblogs.com/gsxl/')
        print("get 广深小龙 博客园--首页")
        print(driver.find_element_by_id("Header1_HeaderTitle").text)
        time.sleep(3)
        driver.quit()
        print("运行完毕,即将关闭...")
    
    @pytest.mark.run(order=1)
    def test2():
        driver = webdriver.Chrome()
        driver.get('https://www.cnblogs.com/gsxl/p/13233740.html')
        print("get 广深小龙 博客--docker-selenium")
        print(driver.find_element_by_id("Header1_HeaderTitle").text)
        time.sleep(3)
        driver.quit()
        print("运行完毕,即将关闭...")
    
    @pytest.mark.run(order=2)
    def test3():
        driver = webdriver.Chrome()
        driver.get('https://www.cnblogs.com/gsxl/p/13193939.html')
        print("get 广深小龙 博客园--jenkins-allure")
        print(driver.find_element_by_id("Header1_HeaderTitle").text)
        time.sleep(1)
        driver.quit()
        print("运行完毕,即将关闭...")

    结果:起两个进程先运行了test2和test3,最后运行test1

    结论:多线程 + 顺序 运行用例,是有效果的。

     关于 pytest.ini 简单使用介绍:

    在项目根目录下创建 pytest.ini 文件,运行时会自带设置的参数,比如多线程 -n2,--alluredir path 等等

    这样我们在终端输入的时候就不用每次都输入参数了,因为它会默认带上。

     欢迎来大家QQ交流群一起学习:482713805

  • 相关阅读:
    PAT A1094 The Largest Generation (25 分)——树的bfs遍历
    PAT A1055 The World's Richest (25 分)——排序
    PAT A1052 Linked List Sorting (25 分)——链表,排序
    PAT A1076 Forwards on Weibo (30 分)——图的bfs
    辅导员
    辅导员面试
    C程序设计
    Excel VBA 基本概念
    Excel函数
    导入excel表的数据到数据库ssh
  • 原文地址:https://www.cnblogs.com/gsxl/p/13233902.html
Copyright © 2011-2022 走看看