软件测试最全字节8年经验之谈 —— 详解python自动化单元测试!,2024年最新面试篇

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

  1. def get_http(url):
  2. return request(url) # 正常的代码,返回request的值
  3. #--->
  4. def get_http(url):
  5. return 10 # 测试时候,我们假设它返回10

在正式代码中肯定是写 request(url),但是在单元测试的代码中,我们可以使用mock使它返回10.

  1. @mock.patch('request')
  2. def get_http(mock_request):
  3. mock_request.return_value = 10
  4. return request(url) # 此时返回值是10,因为我们用mock做了替换
4. 一个简单的例子

下面的一段代码是单元测试写法,包含了mock函数和mock类方法:

  1. import unittest
  2. 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. 函数文档格式要求

既然是要自动生成代码,就需要事先约定格式要求,我们约定函数文档如下:

  1. class maths():
  2. def __init__(self):
  3. 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文件,遍历每个模块的函数和类方法,提取函数文档,解析文档内容,依照格式生成对应的测试用例文件即可。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ms/4f45ff00ff254613a03fab5e56a57acb)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值