-------笔记:
"""
定义测试类,继承unitest.TestCas
每一个测试用例函数需用test_开头
在类上面运行,则运行全部用例
在函数上运行,则只运行当前函数的用例
编写用例:
1、测试数据
2、测试步骤
3、断言:预期结果与实际结果的比对
slef.AssertXXXXX(实际结果,预期结果)
4、前置后置
setUp在用例执行之前执行
tearDown在用例之后执行
setupClass 类里面的第一个用例执行之前
teardownClass 类里面的第一个用例执行后
"""
=========开始=========
#1、准备:定义用例功能判断规则(练习用,请以真实测试环境,本次只是为写后续的测试用例做准备)(login.py)
def login_check(username=None, passwd=None):
if username != None and passwd != None:
if username == 'python' and passwd == '123456':
return ({'code': 0, 'msg': '登录成功'})
else:
return ({'code': 1, 'msg': '账号或密码不正确'})
else:
return ({'code': 1, 'msg': '用户名或密码均不能为空!'})
#2、编写测试用例(test_login.py)
import unittest
from www.test_case.login import login_check
from ddt import ddt, data
datas = [
{'user': 'python', 'passwd': '123456', 'check': {'code': '0', 'msg': '登录成功'}},
{'user': 'python', 'passwd': '12345', 'check':{'code':'1','msg':'用户名或密码不正确'}},
{'user': 'pythonnnnn', 'passwd': '123456', 'check':{'code':'1','msg':'用户名或密码不正确'}}
]
@ddt
class Test_login(unittest.TestCase):
@data(*datas) # 接收列表数据 ,此时已经进行了拆包,传到下面参数 case
def test_login(self, case):
res = login_check(case['user'], case['passwd'])
self.assertEqual(res, case['check'])
@classmethod
def setUpclass(cls):
print('开始类之前........')
@classmethod
def tearDownClass(cls):
print('结束类之后.......')
def setUp(self):
print('开始用例之前....')
def tearDown(self):
print('结束用例之后.......')
#3、执行用例+生产测试报告
import unittest
from HTMLTestRunnerNew import HTMLTestRunner
# 常利用discover() 从指定目录开始搜索测试用例:
# 1、指定目录
# 2、过滤用例文件,以文件名匹配, 如:test*.py 表示所有以test开头,.py 结尾的用例
res = unittest.TestLoader().discover('D:\pycharm\python3\webapp\www') #收集用例
with open('report.html','wb') as fs:
runner = HTMLTestRunner(fs,title='My report')
runner.run(res)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人