第十期_Python 语法与单测体系_20190714

参考连接

Python基本类型

echo 'print(3*7)' |python

Python控制结构

Python数据结构

Python面向对象

Python Lib

中场休息

16:00 回来

Python单元测试unittest

单元测试属于白盒测试
单元测试框架不局限于白盒测试,黑盒测试也会用到对应的测试框架技术

单元测试是否需要相同的语言

java写的代码可以通过kotin scala jython做单元而逝,c写的原生so或者dll,也可以通过python java做单元测试。只要提供了清晰的编程接口就可以调用。

单元测试是不是都是研发写

是的,单元测试是研发的职责,不是测试工程师的。为什么我们会学单测?

  • 因为测试工程是需要关注代码质量,需要维护单元测试的运行,使用持续集成进行每日构建
  • 另外一个是我们的自动化测试(UI、接口、其他形式)理论和实现也都是跟单元测试是一致的,具备相同的技术栈。

代码很难做单元测试

一般有如下导致的

  • 第三方依赖太多,这个情况需要改进你的设计,实现解耦,第二个是对依赖做mock,使用stub mock fake等各种手段来接触不必要的依赖。
  • 存在系统资源依赖,mock也可以搞定
  • 对class级别的关键入口函数做单测,java就是public, python里只能自己去选择,跟业务有关联的功能
  • 传参太多,重构

还有很多问题,所有的问题都有一个概念,叫做“提高可测性”

数据驱动框架:https://ddt.readthedocs.io/en/latest/example.html

Pytest入门

测试报告Allure2

课间作业1

class Calc:
    def add(self, a, b):
        return a + a

    def div(self, a, b):
        if b==0:
            return None
        else:
            return a/b

    def above(self, a, b):
        if(a>b):
            return True
        else:
            return False

给出针对above的测试用例,把代码贴到回复里

课后作业

  • appium python client 、 requests看下他们的源代码与测试用例的结构
  • 针对requests,为其中的2个函数提补充2条测试用例,把代码贴到回复里