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. CUDA 内存统一分析

    CUDA 内存统一分析 关于CUDA 编程的基本知识,如何编写一个简单的程序,在内存中分配两个可供 GPU 访问的数字数组,然后将它们加在 GPU 上. 本文介绍内存统一,这使得分配和访问系统中任何处 ...

  2. Covid经济型自主汽车

    Covid经济型自主汽车 Autonomous Vehicles in Covid Economy Covid经济已经对汽车行业产生了负面影响,更多的变化正在进行中,同时也带来了大量的不确定性.我们可 ...

  3. Python批量重命名 工具贴(一)

    说明 由于在处理图片数据和其他数据时,经常需要对数据进行批量重命名操作,每次使用时都需要重写,非常不便,因此记录下重命名代码方便后续使用. 文件结构说明 参数说明: path为输入路径 image_t ...

  4. 【模拟8.01】matrix(DP杂题,思维题)

    很神的题,感谢lnc大佬的指点. 先设1-LL[i]统称左区间,RR[i]-m为右区间 用L[i]统计从1-i列,出现的左区间端点的前缀和,R[i]是右区间.... f[i][j]中j表示当前在第i列 ...

  5. 用VSCode终端实现重定向比较程序输出和正确输出

    在刷 OJ 题目或者进行编程考试或比赛时,经常需要对编写好的程序进行测试,即运行编写好的程序,输入样例输入或者自己编写的输入数据,查看程序输出结果和样例输出或者正确输出是否一致.这种方法有很多弊端,当 ...

  6. js笔记21

    1.解决函数内的this指向 (1)可以在函数外提前声明变量  _this/=this (2)通过apply和call来修改函数内的this指向 二者的区别: 二者的用法不一样,就是参数形式不一样   ...

  7. Mysql的5种索引添加类型

    1.添加普通索引: alter table 'table_name' add index index_name('column') 2.添加主键索引 alter table 'table_name' ...

  8. UnityWebRequest使用总结

    using System.Collections; using UnityEngine; using UnityEngine.Networking; /// <summary> /// 网 ...

  9. 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

    iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...

  10. Linux系统安装-C7

    1.安装部署操作系统 (1)创建虚拟机,加载系统镜像 (2)进入系统引导界面进行配置 补充:centos7系统网卡名称 默认系统的网卡名称为 eth0 eth1 –centos6 默认系统的网卡名称为 ...