zoukankan      html  css  js  c++  java
  • Python+pytest知识点回顾

    pip install pytest

    pytest 单元测试框架
    pytest高于unittest测试框架
    unittest测试类需要继承unittest.TestCase类
    pytest不需要继承,可以是一个函数,也可以是一个类

    unittest参数化需要依赖第三方的库
    pytest不需要依赖,直接使用内部的库parametrize

    unittest测试报告HTMLTestRunner
    pytest 测试报告pytest-html 或者是 allure

    unittest是没有插件的
    pytest有很丰富的插件

    unittest不支持失败重试
    pytest支持失败重试

    import pytest

    class TestF1:
        def test_01(self):
            print('AAA')

        def test02(self):
            print('BBB')

    ==:内容和类型必须同时满足
    in:后者包含前者
    is:前后者两个值相等

    def A_test():
        assert 1==1

    def B_test():
        assert 1==2

    def test_in():
        assert '测试实战' in 'Python测试实战'

    def test_is():
        assert 2 is 2

    if __name__ == '__main__':
        pytest.main(['-v'])

    执行pytest测试用例会显示进度条
    pip install pytest-sugar 

    1. -v:输出详细的信息
    2. -s: 输出测试函数或者测试方法里面的print()的内容
    3. -k:按分类执行测试点
    4. -m:进行分组
    5. -x:执行失败立即停止(后面的测试函数/方法不执行)
    6. --maxfail:执行失败的最大次数(如果只有一个失败的--maxfail=1,后面的代码不执行,--maxfail=2执行后面的代码)
    7. --tb=no:关闭信息
    8. --tb=short:只输出assert的错误信息(会提示具体的函数以及错误代码)
    9. --tb=line:一行行展示所有错误信息的位置(不会提示具体函数,但是会提示断言失败的位置)
    10. --lf:定位错误
    11. --ff:遇到错误继续执行
    12. --duration=0:测试函数执行速度

    pytest代码执行的顺序:
    pytest -v xx.py
    pytest -v xx.py::test_001
    pytest -v -s xx.py
    pytest -v -k 'login or logout' xx.py
    pytest -v -m login xx.py
    pytest -v -k 'login or ui' xx.py
    pytest -v -x xx.py
    pytest -v --maxfail=2 xx.py
    pytest -v  xx.py --tb=no
    pytest -v  xx.py --tb=short
    pytest -v  xx.py --tb=line
    pytest -v  xx.py --tb=line
    pytest -v --lf xx.py
    pytest -v --ff xx.py
    pytest -v --duration=0 xx.py

    @pytest.mark.api
    def test_001():
        assert 1==1

    class Login:
        @pytest.mark.login
        def test_login_01(self):
            print('登录成功1')

        @pytest.mark.login
        def test_login_02(self):
            print('登录成功2')

        @pytest.mark.logout
        def test_logout_01(self):
            print('退出登录1')

        @pytest.mark.logout
        def test_logout_02(self):
            print('退出登录2')


    import requests

    def test_baidu():
        '''测试百度链接'''
        r = requests.get('http://www.baidu.com')
        assert r.status_code == 200

    def test_jd():
        '''测试京东链接'''
        r = requests.get('http://www.jd.com')
        assert r.status_code == 200

    def test_taobao():
        '''测试淘宝链接'''
        r = requests.get('http://www.taobao.com')
        assert r.status_code == 200

    def test_sina():
        '''测试新浪链接'''
        r = requests.get('https://mail.sina.com.cn/')
        assert r.status_code == 200


    pytest 和 selenium 整合    
    pip install pytest-selenium

    执行:
    pytest -v xx.py --driver Chrome
    import time
    from selenium import webdriver
    driver = webdriver.Chrome()
    import pytest

    def login(selenium,username=None,password=None):
        '''测试公共分离'''
        selenium.get('https://mail.sina.com.cn/')
        time.sleep(2)
        selenium.find_element_by_id('freename').send_keys(username)
        time.sleep(2)
        selenium.find_element_by_id('freepassword').send_keys(password)
        selenium.find_element_by_class_name('loginBtn').click()

    def test_login_pwd_null(selenium):
        '''测试新浪邮箱用户密码为空'''
        login(selenium=selenium,username='',password='')
        user = selenium.find_element_by_class_name('loginError.tip11').text
        assert user == '请输入邮箱名'

    def test_pwd_null(selenium):
        '''测试新浪邮箱密码为空'''
        login(selenium=selenium,username='tao@sina.com',password='')
        pwd = selenium.find_element_by_class_name('loginError.tip13').text
        assert pwd == '请输入密码'
  • 相关阅读:
    html 上传图片前预览
    php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法
    php 计算 pdf文件页数
    php 获取半年内每个月的订单数量, 总价, 月份
    php 获取两个数组之间不同的值
    小程序支付功能
    关于nginx的Job for nginx.service failed because the control process exited with error code.错误
    linux 安装 Apollo
    MongoDB待续。。。
    ABP vNext...待续
  • 原文地址:https://www.cnblogs.com/Teachertao/p/12304019.html
Copyright © 2011-2022 走看看