先进行登录,然后在登录函数返回token
在使用接口函数调用pytest.fixture()装饰器,将登录接口的返回值拿到
py文件以test开头或结尾
类以test开头或结尾,不能有init方法
方法以test开头或结尾
位置参数
关键字参数
默认参数
不定长参数(可变参数)
参数组合,解包
pytest有三种传参方式,主要用到前两种
@pytest.mark.parametrize()装饰器方式进行参数化
pytest.fixture()方式进行参数化,fixture装饰的函数可以作为参数传入其他函数
conftest.py文件中存放参数化函数,可作用于模块内的所有测试用例
@pytest.fixture()有一个scope参数,并且有五个作用域级别
scope说明:
function 默认值,函数或方法级别被调用,当函数执行结束后,fixture则被销毁
class 类级别调用一次,当类中的最后一个测试函数执行结束后,fixture则被销毁
module 模块级别(每一个.py文件)调用一次,当模块中最后一个测试函数执行结束后,fixture则被销毁
package 包(一个文件夹下的.py文件)级别调用一次,当包中最后一个测试函数执行结束后,fixture则被销毁
session 多个文件调用一次,当多文件中最后一个测试函数执行结束后,fixture则被销毁
‘’’
如果想在python中处理excel文件,是需要专门模块
xlrd模块使用:
1、安装xlrd模块:pip3 install xlrd
2、导包
3、使用xlrd模块得方法打开excel文件
4、读取其中一个sheet页数据
5、获取某一行数据:row_values(0)/col_vaules(0)
6、获取行数或者列数:nrows/ncols
7、使用for循环遍历每一个单元格数据
for i in range(总行数):
print(table.row_values(i)[0])
‘’’
import xlrd
from selenium import webdriver
import time
#使用xlrd模块方法打开excel文件
data = xlrd.open_workbook('date.xlsx')
table = data.sheets()[0]
nrow= table.nrows
ncols=table.ncols
print(nrow)
for i in range(nrow):
print(table.row_values(i)[0])
# 创建浏览器对象
driver = webdriver.Chrome()
driver.get('https://mail.163.com/register/index.htm?from=163mail&utm_source=163mail')
# 注册用户名
driver.find_element_by_xpath('//*[@id="username"]').send_keys(table.row_values(i)[0])
driver.find_element_by_xpath('//*[@id="password"]').send_keys(table.row_values(i)[1])
driver.find_element_by_xpath('//*[@id="phone"]').send_keys(table.row_values(i)[2])
driver.find_element_by_xpath('/html/body/div[2]/div/div/div[2]/div[2]/div[4]/span').click()
driver.find_element_by_xpath('/html/body/div[2]/div/div/div[2]/div[2]/div[5]/a[1]').click()
# 先设置一下延迟时间
time.sleep(2)
# 需要设置断言
exUrl = "https://mail.163.com/"
actUrl = driver.current_url
if exUrl == actUrl:
print("注册成功,正向用例成功")
else:
print("注册失败,注册用例不通过")
# 设置进入下一步时间
time.sleep(2)
# 退出
driver.quit()
在一个没有接口文档的自动化测试中,只能通过抓包及查日志查看发送的信息,其中有一个接口发送的信息如下:
“enable”: true, “new_size”: null,
以为null就是个字符串,直接将请求拼接成下面格式:
“enable”: true, “new_size”: “null”,
发现发送错误,我们换换,既然是为null,就是为空
enabl": true, “new_size”: ‘’,
再次发送,还是错误
其实,python与其它语言不一样,null即为none
python中none就是null,所以要传None
enable": true, “new_size”: None,
即可发送成功
注意:不对mysql查询出的数据做任何转换,返回数据为‘tuple’,这时是不能直接供接口校验使用的,需要进行数据转换
1、tuple转str:
after_testdata=str(testdata)#转换成str类型
2、查询数据库数据转换为list:
#把数据库里取出来的数据,转换成list格式
listdata=[]
for row in info:
listdata.append(row[0])
return listdata
3、查询数据库数据转换为json:
jsondatar = json.dumps(jsonData)