一:常用测试功能
- DDT基础使用(一):传递基础数据类型
# coding=utf-8
from ddt import *
import unittest
@ddt
class imoocTest(unittest.TestCase):
# int
@data(1, 2, 3, 4)
def test_int(self, i):
print("test_int:", i)
# str
@data("1", "2", "3")
def test_str(self, str):
print("test_str:", str)
if __name__ == '__main__':
unittest.main(verbosity=2)
- DDT传多个参数:
import unittest
from ddt import ddt,data,file_data,unpack
@ddt
class TestDDT(unittest.TestCase):
listb=[(1,1),(2,1),(3,1)]
@data(*listb)
@unpack
def test_addd(self,a,b):
c= a+b
print(c)
if __name__ == "__main__":
unittest.main()
requests请求:
import unittest
from ddt import ddt,data,file_data,unpack
import requests
@ddt
class TestDDT(unittest.TestCase):
listb=[("0","1"),("7","0")]
@data(*listb)
@unpack
def test_addd(self,a,b):
url = "xx"+a+"xx"+b"
content = str(r.content)
print(content)
if __name__ == "__main__":
unittest.main()
- DDT基础使用(二):传递一个复杂的数据结构
# coding=utf-8
from ddt import *
import unittest
@ddt
class imoocData(unittest.TestCase):
tuples = ((1,2,3),(1,2,3))
lists = [[1,2,3],[1,2,3]]
@data((1, 2, 3), (1, 2, 3))
def test_tuple(self, n):
print("test_tuple", n)
# 列表
@data([1, 2, 3], [1, 2, 3])
@unpack
def test_list(self, n1, n2, n3):
print("test_list", n1, n2, n3)
# 元组2
@data(*tuples)
def test_tuples(self, n):
print("test_tuples", n)
# 列表2
@data(*lists)
@unpack
def test_lists(self, n1, n2, n3):
print("test_lists", n1, n2, n3)
# 字典
@data({'value1': 1, 'value2': 2}, {'value1': 1, 'value2': 2})
@unpack
def test_dict(self, value1, value2):
print("test_dict", value1, value2)
if __name__ == '__main__':
unittest.main()
- DDT基础使用(三):传递json文件
# coding=utf-8
from ddt import *
import unittest
@ddt
class imoocTest(unittest.TestCase):
@file_data('x.json')
def test_json(self,data):
print(data)
if __name__ == '__main__':
unittest.main()
json文件要填对
- DDT基础使用(四):传递Yaml文件
from ddt import *
import unittest
@ddt
class imoocTest(unittest.TestCase):
@file_data('y.yaml')
def test4(self, data):
print("yaml", data)
if __name__ == '__main__':
unittest.main()
运行的方式:
python3 test.py ----直接输出
pytest test.py --html=report.html ----输出html文件
2.悲催了,本来想用DDT结合pytest的,但是两者没有办法结合,上午主要是白白做了这些。算了,都是成长的,慢慢积累一下,就好了。
ddt应该由TestCase
子类使用,因此它不适用于裸测试类。但是请注意,pytest可以很好地运行使用TestCase
的ddt
子类,因此如果您已经有了一个基于ddt的测试套件,那么它应该使用pytest运行程序运行而不需要修改。
还要注意,pytest有parametrize,它可以用来替换ddt
支持的许多用例。
例如,以下基于ddt
的测试:
转载至:https://www.coder.work/article/2029730
# coding:utf-8
#!/usr/local/bin/python3.8
import pytest
@pytest.mark.parametrize("test_input,expected",
[ ("3+5", 8),
("2+4", 6),
("6 * 9", 42),
])
def test_eval(test_input, expected):
assert eval(test_input) == expected
if __name__ == "__main__":
pytest.main(["-s", "test.py"])
- python的字符串还有一种参数化的方式,通过format函数。这个和pytest的参数化相比,更加的清楚一些,但是是否能够有多种输入,还需要研究一下。
比如:
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
https://www.runoob.com/python/att-string-format.html ----format参考
4.结合flask框架,将输出的json,展示的更加优雅一点。
https://zhuanlan.zhihu.com/p/104273184 -----flask的框架
以前用过Django,但是觉得Django的使用没有没有这个轻量。
主函数
#导入render_template模块 #导入Flask类
from flask import Flask,render_template
#实例化并命名为app实例
app=Flask(__name__)
#调用route路由方法,括号里给定参数,/符号默认为首页
@app.route('/')
def index():
# return 'welcome to my webpage!'
# return '<h3>welcome to my webpage!</h3><hr><p style="color:red">输出语句测试</p>'
msg="my name is caojianhua, China up!"
#调用render_template函数,传入html文件参数, 以及加入变量传递
return render_template("index.html",data=msg)
if __name__=="__main__":
#调用run方法,设定端口号,启动服务
app.run(port=2020,host="127.0.0.1",debug=True)
templates的存储html文件,名为index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>welcome to 2021</title>
</head>
<body>
welcome to my webpage
<hr>
<p>这是采用render_template模板方法获得的内容:</p>
<br>
{{data}} #显示出传递过来的变量内容
</body>
</html>
5.requests模块的的接口测试
https://www.jianshu.com/p/eee66fc81884
- 自动化测试的完整流程
https://testerhome.com/articles/20648
二:搭建uve自动化测试
如何建造???