既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
def get_http(url):
return request(url) # 正常的代码,返回request的值
#--->
def get_http(url):
return 10 # 测试时候,我们假设它返回10
在正式代码中肯定是写 request(url)
,但是在单元测试的代码中,我们可以使用mock
使它返回10.
@mock.patch('request')
def get_http(mock_request):
mock_request.return_value = 10
return request(url) # 此时返回值是10,因为我们用mock做了替换
4. 一个简单的例子
下面的一段代码是单元测试写法,包含了mock函数和mock类方法:
import unittest
from unittest import mock
-
from unittest.pyauto_unittest_test import maths, func_add # 导入需要测试的函数和类
-
class Test_pyauto_unittest_test(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
-
# 测试一个类的方法,没有外部依赖
def test_maths_add_0(self ,):
a,b=1,2
my_math = maths()
result = my_math.add(a,b)
self.assertEqual(result, 3)
-
# 测试一个类的方法,并假设 self.add 的返回值是10
def test_maths_add2_0(self ,):
a,b=1,2
my_math = maths()
maths.add = mock.Mock(return_value = 10) # 假设 self.add 的返回值是10
result = my_math.add2(a,b)
self.assertEqual(result, 10)
-
# 测试一个类的方法,并假设调用外部函数的返回值是 10
# 假设内部调用的类方法的返回值也是10
@mock.patch('unittest.pyauto_unittest_test.other_func')
def test_maths_mul_0(self , mock_other_func):
mock_other_func.return_value = 10 # 假设外部调用函数返回值是10
a,b=1,2
my_math = maths()
maths.add = mock.Mock(return_value = 10) # 假设内部调用的类方法也是10
result = my_math.mul(a,b)
self.assertEqual(result, 20)
-
# 测试一个函数,并假设内部调用的func_mul函数的返回值是10
@mock.patch('unittest.pyauto_unittest_test.func_mul')
def test_func_add_0(self , mock_func_mul):
mock_func_mul.return_value = 10 # 假设内部调用的函数返回值是10
a,b=1,2
result = func_add(a,b)
self.assertEqual(result, 20)
-
if __name__ == '__main__':
unittest.main()
看到没,这就是简单的单元测试的写法,已经涵盖了大部分测试用例写法。我们的目标,就是自动生成这样的测试用例。
既然都是模板套出来的,就很简单了。
5. 函数文档格式要求
既然是要自动生成代码,就需要事先约定格式要求,我们约定函数文档如下:
class maths():
def __init__(self):
pass
-
def add(self, a,b):
"""
# 测试用例代码需要夹在 两个 === unittest === 之间
=== unittest ===
a,b=1,2 # 一些初始化参数
mock.Mock maths.add=10 # mock 类的方法,可以是外部调用的类
mock.patch other_func=10 # mock 一个函数
my_math = maths() # 实例化当前类
input = my_math.add(a,b) # 输入,即要测试的方法
output = 3 # 输出,要进行assertEqual的值
=== unittest ===
other unittest # 如果有多个测试,接着往下添加即可
=== unittest ===
"""
return a+b
不管是测试函数还是测试类的方法啊,都以上面的格式约定规范化,是不是很简答啊。 我们就根据这些文档内容生成上面的测试用例,只要一一对应即可。
6. 生成测试用例
经过上面的讲解说明,接下来要做的事情就很简答了,包括遍历整个项目的每一个python文件,遍历每个模块的函数和类方法,提取函数文档,解析文档内容,依照格式生成对应的测试用例文件即可。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
ms/4f45ff00ff254613a03fab5e56a57acb)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!