Pytest基础自学系列
Posted COCOgsta
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytest基础自学系列相关的知识,希望对你有一定的参考价值。
视频来源:B站《冒死上传!pytest接口自动化测试框架(基础理论到项目实战及二次开发)教学视频【软件测试】》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
项目实战(pytest+allure+数据驱动)
/run.py
# 测试报告 unittest pytest 自带的测试 allure
# 好看 付
# 配置环境
# 1.安装allure-pytest pip install allure-pytest 生成测试数据
# 2.下载commandline 压缩包 解压在某个目录 /Users/guoliang/SynologyDrive/SourceCode/software/allure-2.13.5/bin
# 3.配置环境变量 sudo vim ~/.bash_profile
# 生成测试报告 执行用例
import os
import pytest
# alluredir 生成数据 数据文件夹allure-result
# 生成测试报告
# allure generate 执行测试数据 -o 生成测试报告
if __name__ == '__main__':
pytest.main(['py_test.py', '--alluredir', './allure-result'])
os.system('allure generate ./allure-result -o ./reports')
/py_test.py
import time
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from config.loadyaml import *
class TestCase:
# 测试登录 测登录之前要做的事情 打开浏览器 访问
# http://39.98.138.157/shopxo/index.php?s=/index/user/logininfo.html
def setup(self):
self.driver = webdriver.Chrome()
self.driver.get("http://39.98.138.157/shopxo/index.php?s=/index/user/logininfo.html")
# 测完了之后 关闭浏览器
def teardown(self):
time.sleep(3)
self.driver.quit()
# 测试登录 成功 输入框输入用户名 密码框输入密码 登录按钮点击一下
# 测试用例失败 用户名不正确 密码正确 操作步骤是一样的 只是数据不同
# 不写死 数据给我 分离 pytest yaml数据 不好的地方 规则比较多
# - 列表[] : 字典 ['uname':'xxx', 'upas':'123456']
# shop的数据
@pytest.mark.parametrize('udata', loadyaml('./data/login.yaml'))
def test_02(self, udata):
print(udata['uname'])
self.driver.find_element(By.NAME, 'accounts').send_keys(udata['uname'])
self.driver.find_element(By.NAME, 'pwd').send_keys(udata['upas'])
self.driver.find_element(By.XPATH, '/html/body/div[4]/div/div[2]/div[2]/form/div[3]/button').click()
# 填充东西 我想要去实现 测试登录 用例 正常用例 异常用例
# 断言
# 预期结果 实际结果
# 优化 1.断言
# 1. 关键字驱动 常用的操作 项目的基本操作 点击 提前封装起来 后面去使用直接使用
# 刷花
# def 刷花():
# 刷花
# 刷花()
# 项目结构
# 2. 项目里面 页面 公司框架 维护 扩展 登录页 下单页 支付页 首页
# 测试数据 分离数据 正常 异常
# 3. 生成测试报告 1.2句代码 html css js代码
# 邮件
# 登录 下单 支付流程 线性代码 加需求 建需求
# 简单:
# 1.测试登录 登录步骤写出来
# 2.数据 用yaml文件分离出来
# 3.不能直接使用 读取yaml文件
# 4.获取数据 传进来 @pytest.mark.parametrize
/config/loadyaml.py
# 专门取yaml文件数据
import yaml
# 封装 方便调用
# 打开我的文件数据 r可读
def loadyaml(filename):
stream = open(filename, 'r')
# 读取文件数据
data = yaml.load(stream, yaml.FullLoader)
return data
/data/login.yaml
-
uname: xxx
upas: 123456
-
uname: xxx2
upas: 123456
-
uname: xxx3
upas: 123456
以上是关于Pytest基础自学系列的主要内容,如果未能解决你的问题,请参考以下文章