ui自动化框架之pytest+seliuem讲解

框架

自动化框架的优点????????
1. 写脚本 更加简洁
2. 脚本维护
1. 自动化
2. 效率低 提高脚本脚本
解决多脚本使用框架,不能批量运行?????
pytest+
pytest + selenium UI自动化
python常用的三种框架???????????
unittest ---python自带
pytest --- 更好的unittest
noise X
前提第一步????
安装模块
pip install pytesw

windows切换路径命令cd G: 

pytest初级学习地址:
https://learning-pytest.readthedocs.io/zh/latest/doc/intro/getting-started.html

pytest --version  cmd看下版本显示代表可以使用

如果你想在命令行运行就要进入对应目录执行

pytest test_66.py

pytest demo.py
记住:一个用例最少放到一个方法里
一个方法就是一个pytest测试用例,方法必须以test下划线开头 test_
第一个命令
pytest 命令 运行当前路径下 所有符合条件的测试用例
文件模块 test_开头 test_开头
pytest 递归查询当前路径下所有符合条件的用例
pytest 命令 运行当前路径下 递归查询所有符合条件的测试用例
你想单独的运行不用pytest怎么操作????单独跑一个用例???
导入import pytest
在结尾加上 if __name__ == '__main__':
单独运行 .py文件 首先从主函数开始执行这句话???
pytest.main() 运行当前文件里 所有符合条件的测试用例,一般没啥用最好命令行会多跑

你想运行文件操作:
命令1:pytest 

1.进入文件目录:递归查询所有的符合条件的

命令2 :pytest test_66.py

运行文件下符合测试用例的

你想递归批量运行另外的文件名字

你想在python单独运行一个文件???
在python文件
导入import pytest
在结尾加上 if __name__ == '__main__':
单独运行 .py文件 首先从主函数开始执行这句话,使用命令也能跑

import pytest
def test_case01():
print('case01')
if __name__=='__main__':
pytest.main()

如果一个文件文件里出现类的方法怎么操作???????
类的名字要加class Testlogin():#登录 起名字要标准

ui自动化框架之pytest+seliuem讲解

需要注意下pytest.main() 是运行这个目录下所有的测试用例不光你这个文件还有别的文件和文件夹下的用例,相当于在这个路径下执行pytest是一样的

没有学的太好就在cmd命令行里面跑

例如:pytest test_demo.py

你做自动化测试??如何组织划分你的测试用例????  面试问题必问
怎么划分??? 先说ui的测试用例划分
第一种
一个模块,按照页面和功能分 文件有十个用例十个方法

一个方法就是一个用例,把方法放到一个文件里

比如test_login test_zhuce当文件名字  进来文件,一个方法就是test_login01 

还有就是一个类下面放好多方法

ui自动化框架之pytest+seliuem讲解

第二种
正向用例 class 正向放到一个类
反向用例 class 反向放到一个类 
ui 自动化以页面为名字,附上 方法,一个方法就是一个用例,方法放到文件里

你自己想要显示print内容??????
命令行这么输入
pytest -s 打印详细信息
代码这么改???
if __name__=='__main__':
pytest.main(['-s'])#运行当前目录下所有的测试用例并且让你的print打印出来

想要在python运行一个文件,进行用例的测试,建立一个入口文件?????????????

对应场景:你想执行一个test_login和一个test_home文件 同时执行 在python里面

建立一个run文件 输入代码

import pytest
if __name__=='__main__':
pytest.main(['-s']) 预期会在当前目录寻找所有test_ 开头的符合条件用例并打印print详细信息

这种方法叫入口执行文件

选择某几个文件来跑????怎么搞??

pytest.main(['-s','test_home.py']) pytest单独执行一个文件的方法
pytest.main(['-s','test_home.py','test_login.py']) pytest单独执行2个文件的方法
pytest.main(['-s','G:/untitled2/python2021/chun']) pytest 执行一个文件夹下的所有用例
pytest.main(['-s','test_login.py::test_login01'])  pytest 执行一个文件下的函数方法

ui自动化框架之pytest+seliuem讲解

 用例的顺序都是字母排行的

# pytest.main(['-s'])#所有的用例
# pytest.main(['-s', 'test_66.py']) # 运行当前目录单独测试用例

pytest.main(['-s', './demo']) 当前目录下文件夹
# pytest.main(['-s', 'test_55.py::test_002'])  # 运行文件下的函数方法
你想对用例标记咋办??????????
一般都是somke冒烟测试用例 还有回滚测试用例,针对测试用例分不同的组
#打标签@pytest.mark
# pytest.main(['-s','-m=smoke or huigui'])
最好加一个ini对测试用例进行分组
import pytest
if __name__=='__main__':
pytest.main(['-s','-m smoke'])
[pytest]
markes=
smoke:冒烟测试用例
  huigui:回归测试用例
pytest.main(['-s','-m=not smoke'])  运行除了标签用例以外的文件
pytest.main(['-s', '-m=huigui or smoke']) 运行你的ini文件打标签的用例

 对于每一个开始和结束固定操作,进行封装提取

fixture 夹具函数

每个用例  开始 或 结尾  时间节点上 都有固定的操作
固定的流程

有问题时候呢,想要效果有问题关闭浏览器

 
pytest单独执行一个文件的方法