十一期_Python 测试_20191222

参考资料

Python

Python=是一个用C语言编写的Python语法解析和执行的引擎 CPython
Jython=是一个用Java语言编写的Python语法解析和执行的引擎
PyPy =是一个用Python实现的Python解释器

  • Native程序:内容是由具体平台的指令集组成的一个二进制的文件,不需要解析直接执行。有很多指令集不同的平台,native的缺点,比如ARM、x86不同的指令集,开发者需要单独生成每个平台上的二进制文件,

  • 解析引擎/解析器/RunTime:在各个平台上使用编译好的引擎,用来解析标准语法,从而实现通过解释执行来实现一份文件同时可以运行在不同的平台上。

  • 语言特性Language:Python2、Python3、Java、C#、Scala

  • 引擎Runtime:CPython、JVM、.Net

  • 组合:Jython=Python2+JVM Scala on JVM

语言:语法、关键字
引擎:执行特定语言的一个引擎,可以是解释性的,也可以是编译型的

  • 语言 → 解析执行引擎
  • 语言 → 中间字节码 → 执行引擎
  • 语言 → 指令集

Kotlin/Scala → 中间字节码 → Kotlin Native → 指令集 速度最快
Kotin/Scala → 中间字节码 → Kotlin JS → JavaScript 可以做前端开发
Kotlin/Scala → 中间字节码 → Kotlin JVM → JVM解析执行 可以做后端开发

  • GraalVM is a universal virtual machine
  • for running applications written in JavaScript, Python, Ruby, R,
  • JVM-based languages like Java, Scala, Clojure, Kotlin,
  • and LLVM-based languages such as C and C++

以App开发为例

  • Java开发的app,编译为apk后,可以在所有的android手机上运行,因为上面有个Dalvik的解析器
  • apk无法在iOS上运行,原因是因为apple的手机上没有Dalvik解析器。如果苹果手机增加这个引擎,理论上是可以在iphone上运行apk的。
  • 有Native开发的app,需要编译多份不同指令集的文件,arm、x86,当你缺少其中一种指令集的时候,就无法在特定的平台上运行。你可以试试,微信app可以运行在真机上,但是无法运行在你的Android Studio自带的模拟器上,原因是Android Studio自带的模拟器,是基于x86指令的,而真机是基于ARM指令集的

Pyenv:Python的多版本安装工具

虚拟环境

IDE

社区版本
Community
For pure Python development

单元测试框架unittest

集成测试框架 Pytest

切换Test Runner到pytest

清理之前的run configurations

  • 测试用例定义
  • 测试fixture 测试装置
  • 分组执行
  • 参数化

allure2测试报告框架

pip install allure-pytest
pytest --junitxml=unit/junit.xml --alluredir=unit/allure_results  unit/
allure serve unit/allure_results/
allure generate  unit/allure_results/ -o unit/allure_html

课间作业1

假设有如下函数

def div(a, b):
    return a/b

编写测试用例,并把测试用例代码贴到回复里

课后作业2

把作业1的��例,用参数化替代下,把代码贴到回复里,生成allure报告,并把allure的首页报告截图贴到回复里