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 == '请输入密码'

Python+pytest知识点回顾的更多相关文章

  1. Python + unittest知识点回顾

    postman 安装Newman 先安装node.js,把npm添加到环境变量中. npm install newman --registry=https://registry.npm.taobao. ...

  2. Python + Requests 知识点回顾

    http://www.downza.cn/soft/11145.html PS下载地址 http://www.bejson.com/jsonviewernew/ JSON的在线视图 import re ...

  3. 零基础Python知识点回顾(一)

    如果你是小白,建议只要安装官网的python-3.7.0-amd64.exe 然后在电脑cmd命令提示符  输入检查是否已经安装pip,一般安装了python都会有的. >pip         ...

  4. django知识点回顾与补充

    一.django知识点回顾 1.Cookie操作 - 客户端本地存储的键值对 2.Session操作 - 3.URL路由 - /index -> view.函数 4.MTV 5.View中返回方 ...

  5. Python+Pytest+Allure+Git+Jenkins接口自动化框架

    Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...

  6. 最全Python基础知识点梳理

    本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾.python的详细语法介绍可以查看官方编程手册,也有一些在线网站可以学习 python语言 ...

  7. 面试前的准备---C#知识点回顾----03

    经过一天的奔波,喜忧参半,不细表 再回看下标题,C#知识点回顾 再看下内容,数据库3NF 原谅我这个标题党 今天继续回忆 1.HTTP中Post和Get区别 这忒简单了吧,大家是不是感觉到兴奋了,长舒 ...

  8. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  9. Spring知识点回顾(08)spring aware

    Spring知识点回顾(08)spring aware BeanNameAware 获得容器中的bean名称 BeanFactoryAware 获得当前的bean factory Applicatio ...

随机推荐

  1. TVM vs TensorRT比较

    TVM vs TensorRT比较 如果理解正确的话,TensorRT和TVM会加快预测速度. TensorRT优化预测GPU和TVM优化预测几乎所有平台支持GPU,ARM,Mobile... 两者在 ...

  2. 骑士CMS<6.0.48 模板注入文件包含漏洞复现及遇到的坑

    1.坑 payload:variable=1&tpl=<?php phpinfo(); ob_flush();?>/r/n<qscms/company_show 列表名=&q ...

  3. java后端知识点梳理——多线程与高并发

    进程与线程 进程是一个"执行中的程序",是系统进行资源分配和调度的一个独立单位 线程是进程的一个实体,一个进程中一般拥有多个线程. 线程和进程的区别 进程是操作系统分配资源的最小单 ...

  4. th:insert、th:replace、th:include抽取和引用页面公共片段、传参等

    一.抽取公共片段 th:fragment  给片段命名 将公共片段抽取出来,并在顶级标签内使用th:fragment给该片段命名. 例如:将公共片段抽取出来放到comment/bar.html中: & ...

  5. 【NX二次开发】Block UI 双精度

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  6. 【NX二次开发】Block UI 超级点

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  7. 卢卡斯定理&&中国剩余定理

    卢卡斯定理(模数较小,且是质数) 式子C(m,n)=C(m/p,n/p)*C(m%p,n%p)%p 至于证明(我也不会QAQ,只要记住公式也该就好了). 同时卢卡斯定理一般用于组合数取模上 1.首先当 ...

  8. EEPROM工作原理透彻详解

    原文链接点击这里 EEPROM(Electrically Erasable Programmable read only memory)即电可擦可编程只读存储器,是一种掉电后数据不丢失(不挥发)存储芯 ...

  9. Golang限制函数调用次数

    Golang限制函数调用次数 项目环境 ubuntu+go1.14 需求描述 限制某个函数5秒内只能调用一次,5秒内的其他调用抛弃 工具包使用 这里用到了官方限流器/time/rate 该限流器是基于 ...

  10. 一文说透 Go 语言 HTTP 标准库

    本篇文章来分析一下 Go 语言 HTTP 标准库是如何实现的. 转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/561 ...