专栏首页自动化测试实战单元测试框架选择

单元测试框架选择

内容梗概

本文介绍了单元测试的概念,并以Python语言为基础,推荐单元测试框架。

单元测试

1、定义

单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。

2、为什么要做单元测试

从“基础元件”开测,单元测试对象是代码,以函数或类为单位,完成基础测试,在代码封装成“功能”后,更容易定位功能上出现的问题

3、单元测试用例

通常来讲,单元测试的用例是一个“输入数据”和“预计输出”的集合。 你需要针对确定的输入,根据逻辑功能推算出预期正确的输出,并且以执行被测试代码的方式进行验证,用一句话概括就是“在明确了代码需要实现的逻辑功能的基础上,什么输入,应该产生什么输出”。

4、几个概念

驱动代码、桩代码、Mock代码

驱动代码(Driver)指调用被测函数的代码,在单元测试过程中,驱动模块通常包括调用被测函数前的数据准备、调用被测函数以及验证相关结果三个步骤。驱动代码的结构,通常由单元测试的框架决定。

桩代码(Stub)是用来代替真实代码的临时代码。 比如,某个函数A的内部实现中调用了一个尚未实现的函数B,为了对函数A的逻辑进行测试,那么就需要模拟一个函数B,这个模拟的函数B的实现就是所谓的桩代码。桩代码的应用首先起到了隔离和补齐的作用,使被测代码能够独立编译、链接,并独立运行。同时,桩代码还具有控制被测函数执行路径的作用。

Mock代码和桩代码非常类似,都是用来代替真实代码的临时代码,起到隔离和补齐的作用。但是很多人,甚至是具有多年单元测试经验的开发工程师,也很难说清这二者的区别。

在作者看来,Mock代码和桩代码的本质区别是:测试期待结果的验证(Assert and Expectiation)。

  • 对于Mock代码来说,我们的关注点是Mock方法有没有被调用,以什么样的参数被调用,被调用的次数,以及多个Mock函数的先后调用顺序。所以,在使用Mock代码的测试中,对于结果的验证(也就是assert),通常出现在Mock函数中。
  • 对于桩代码来说,我们的关注点是利用Stub来控制被测函数的执行路径,不会去关注Stub是否被调用以及怎么样被调用。所以,你在使用Stub的测试中,对于结果的验证(也就是assert),通常出现在驱动代码中。

在Python中,我们常用的单元测试框架是unittest、pytest,相比之下pytest更具有学习价值,原因是pytest代码更简洁。而且pytest框架结合selenium做UI自动化也比较方便。如果想看这方面相关文档,大家可以参考悠悠老师的公众号,船长从unittest到pytest都是从悠悠老师那里学习的。

可能单元测试大家做的不是很多,因为单元测试基本都是开发的同事在做,但是这并不妨碍大家学习pytest框架。

不同阶段

自动化分类

1、代码开发阶段——单元测试【pytest、unittest】

2、开发完成——api测试即接口测试

3、页面开发完成稳定后——UI自动化【selenium】

4、上线前性能、安全、兼容性测试【Jmeter】

本文分享自微信公众号 - 自动化测试实战(gh_839e78b6ba28)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Silverlight单元测试框架

    Silverlight单元测试框架 微软的silverlight单元测试框架现在已经托管到了MSDN Code Gallery网站上,你可以在上边找到最新的Re...

    用户1172164
  • Google 单元测试框架

    到 github 拉取代码或者下载某个版本的 zip 包到本地目录,参考 gtest 中的 README.md 如何编译库和编译自己的代码,下面简单介绍下编译方...

    orientlu
  • 单元测试模拟框架:Nsubstitute

         Nsubstitute是一个开源的框架,源码是C#实现的。你可以在这里获得它的源码:https://github.com/nsubstitute/NS...

    张善友
  • 单元测试框架 TestNG VS Junit4

    我们用得最多的基本单元测试框架是junit和testng,下面对这两个工具做个对比。

    MickyInvQ
  • golang 单元测试框架实践

    日常开发中, 测试是不能缺少的,每次手动测试非常费时费力,通过单元测试可以达到一次实现多次利用;

    汤青松
  • DDT框架结合单元测试

    如果磁盘数据量大,一次性读取到内存,再读取到CPU,这样快点。每次启动磁盘读到内存再到CPU,CPU会等待磁盘读到数据,造成CPU资源的浪费。

    清菡
  • Java单元测试框架(一)——JUnit4

    由于squareRoot方法是一个死循环,为了保证测试用例不至于无限制等待,在@Test后使用(timeout=1000),意思是等待1000毫秒,如果1000...

    小老鼠
  • Java单元测试框架(二)——JUnit5

    注意:@BeforeAll、 @AfterALL注解方法必须是静态方法,否则会抛出运行时错误。

    小老鼠
  • Java单元测试——框架(三)——testNG

    安装:https://www.cnblogs.com/xusweeter/p/6559196.html,将org.testng.eclipse.updates...

    小老鼠

扫码关注云+社区

领取腾讯云代金券