测试用例

Python测试框架之unittest和pytest

梦想与她 提交于 2020-01-20 21:02:16
目前搜狗商城接口测试框架用的是unittest+HTMLTestRunner,case数有1097条,目前运行一次自动化测试,时长约为30分钟,期望控制在10分钟或者更短的时间内。近期打算重新优化框架,着重解决运行效率低的问题。最近调研了一下另一种主流测试框架Pytest,Pytest是一个非常成熟的全功能的Python测试框架,本文主要对比了Unittest和Pytest这两种较为流行的Python测试框架。 一、Unittest Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest则是Python语言的标准单元测试框架。 Unittest支持自动化测试,测试用例的初始化、关闭和测试用例的聚合等功能,它有一个很重要的特性:它是通过类(class)的方式,将测试用例组织在一起。 示例: 执行结果: 注:unittest有一个关联模块unittest2,但unittest2仅适用于Python 2.4-2.6。这是由于从Python 2.7开始,unittest增加一些新的特性。为了在老的版本中支持这些特性,所以提供了unittest2这个库。但对于Python 2.7及之后的版本,unittest是唯一的。本次示例中使用的为python2.7。 二、Pytest

PAT乙级真题练习——A+B 和 C

*爱你&永不变心* 提交于 2020-01-20 18:36:27
1011 A+B 和 C (15分) 给定区间[-2³¹, 2³¹,] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。 输入格式: 输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。 输出格式: 对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。 输入格式: 输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。 输出格式: 对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。 输入样例: 4 1 2 3 2 3 4 2147483647 0 2147483646 0 -2147483648 -2147483647 输出样例: Case #1: false Case #2: true Case #3: true Case #4: false 实现代码: # include <stdio.h> int main ( ) { long long A , B , C ; int

1)用例设计及运行规则

风流意气都作罢 提交于 2020-01-19 16:19:00
用例设计原则 文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类 以test_开头的方法 所有的包pakege必须要有__init__.py文件 Cmd执行Pytest用例 1)pytest( 推荐 ) 2)py.pytest 3)python -m pytest 如果不带参数,在某个文件夹下执行时,它会查找该文件夹下所有符合条件的用例 执行用例规则 1.执行某个目录下所有的用例 pytest 文件名/ 2.执行某一个py文件下用例 pytest 脚本名称.py 3.-k 按关键字匹配 pytest -k "MyClass and not method" 这将运行包含与给定字符串表达式匹配的名称的测试,其中包括Python 使用文件名,类名和函数名作为变量的运算符。 上面的例子将运行 TestMyClass.test_something但不运行TestMyClass.test_method_simple 4.按节点运行 每个收集的测试都分配了一个唯一的nodeid,它由模块文件名和后跟说明符组成 来自参数化的类名,函数名和参数,由:: characters分隔。 运行.py模块里面的某个函数 pytest test_mod.py::test_func 运行.py模块里面,测试类里面的某个方法 pytest test_mod.py:

拆分测试用例

孤街浪徒 提交于 2020-01-19 00:18:44
calculator.py class Count: def __init__(self,a,b): self.a = int(a) self.b = int(b) #计算加法 def add(self): return self.a + self.b #计算减法 def sub(self): return self.a - self.b runtest.py import unittest# 加载测试文件import testaddimport testsub# 构造测试集suite = unittest.TestSuite()suite.addTest(testadd.TestAdd("test_add"))suite.addTest(testadd.TestAdd("test_add2"))suite.addTest(testsub.TestSub("test_sub"))suite.addTest(testsub.TestSub("test_sub2"))if __name__ == '__main__': # 执行测试 runner = unittest.TextTestRunner() runner.run(suite)"""这样的拆分带来了好处,可以根据不同的功能创建不同的测试文件,甚至是不同的测试目录,测试文件中还可以将不同的小功能划分为不同的测试类

A+B和C(PAT)

不羁的心 提交于 2020-01-18 19:52:23
1.题目描述 给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。 2.输入描述: 输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。 3.输出描述: 对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。 4.输入例子: 4 1 2 3 2 3 4 2147483647 0 2147483646 0 - 2147483648 - 2147483647 5.输出例子: Case # 1 : false Case # 2 : true Case # 3 : true Case # 4 : false 6.源代码: # include <stdio.h> # include <stdlib.h> # include <math.h> void max ( double a , double b , double c , int X ) { if ( a + b > c ) printf ( "Case #%d: true\n" , X + 1 ) ; else printf ( "Case #%d: false\n" , X + 1 ) ; } int main ( ) {

Python - pytest:

喜欢而已 提交于 2020-01-18 16:14:51
快速入门 pytest是Python的单元测试框架,同自带的unittest框架类似,但pytest框架使用起来更简洁,效率更高。 pytest特点 入门简单易上手,文档支持较好。 支持单元测试和功能测试。 支持参数化。 可以跳过指定用例,或对某些预期失败的case标记成失败。 支持重复执行失败的case。 支持运行由unittest编写的测试用例。 有很多第三方插件,并且可自定义扩展。 方便和支持集成工具进行集成。 安装 pip install pytest 测试 C:\Users\Anthony>pytest --version This is pytest version 5.2.2, imported from c:\python36\lib\site-packages\pytest.py 在测试之前要做的准备 我的演示脚本处于这样一个的目录中: M:\py_tests\ # 我的是M盘的 py_tests 目录,所有操作都在 py_tests 目录内完成 ├─scripts │ ├─test_case_dir1 │ │ ├─test_case_02.py # 用例脚本文件 │ │ └─__init__.py │ ├─test_allure_case.py # 脚本文件 │ ├─test_case_01.py # 脚本文件 │ └─__init__.py ├─report

测试方法:

橙三吉。 提交于 2020-01-18 08:57:34
测试方法的划分 一般的,从看不看代码来划分黑、白盒测试。看代码和内部接口称为白盒测试,否则是黑盒测试方法。 而从软件是否运行的角度来划分静态和动态测试。不运行代码是静态测试,反之就是动态测试。 那么从我们人来参与的角度来看人工测试和自动化测试的。 黑、白、灰盒测试 刚才说了,我们从看不看代码来划分黑、白盒测试。 那黑盒测试可以有静态测试和动态测试,也可以有人工测试和自动化测试。 当然,白盒测试也是一样的。 比如我们要测这个自动售货机。 我们投币然后得到饮料;或者刷卡、扫码等都能得到想要的饮料。 我们做黑盒测试就是测试投币相关的逻辑、选择饮料相关的逻辑,找零或其他的逻辑。 这是我们不管内部结构,只是根据一些数据测试输入输出,比如投币5毛钱,却能得到一瓶2.5的饮料,这就是bug了。 等等等..... 除此之外,我们还需要看内部代码的逻辑,比如如何处理银行和第三方支付的接口逻辑,本地的饮料存储、统计等,看看相关关联的数据之间的交互。这些都是白盒测试范畴。 在测试之前,我们要搞清楚被测对象应该是什么样的,然后实际做出来的和预期进行比较,这样就能及时的发现缺陷;根据被测对象不同,而采用不同的测试方法。 白盒测试 白盒测试是依据被测软件分析程序内部构造,并根据内部构造设计用例,来对内部控制流程进行测试,可完全不顾程序的整体功能实现情况。 白盒测试是基于程序结构的逻辑驱动测试。

测试用例

浪子不回头ぞ 提交于 2020-01-17 21:41:30
测试用例的设计方法: 基于需求的设计方法 2.(最常用)等价类:对于无穷输入 (强调输入)依据需求将输入划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的的等价类测试通过。 有效等价类:对于程序的规格说明书是合理的 无效等价类: 3.(最常用)边界值:对于输入,输出 对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充。 例如:输入框长度1-11,取边界值:0,1,11,12 对于闭区间是往外取,开区间往里取。 对于不说明开闭区间,一般是闭区间。 因果图:强调输入输出之间的关系,结果依赖输入 基本知识:恒等(如果原因为真,那么结果必定为真) 与(只有两个结果都为真,那么结果为真) 或(两个原因中有一个为真,结果为真) 非(只有原因为假,结果才为真) 因果图法设计测试用例的步骤: 1)分析所有可能的输入和可能的输出 2)找出输入与输出之间的对应关系 3)画出因果图 4)把因果图转换成判定表 5)把判定表对应到每一个测试用例 5.正交排列:目的是减少用例数目,用尽量少的用例覆盖输入的两两组合 ** 正交表的性质:每一列中各数字出现的次数一样多,任何两列所构成的各有序数对出现的次数都一样多。 因素数用C表示,水平数用T表示 正交表的表示形式:L=行数(水平数因素数)即L=N(TC) 正交法设计测试用例的步骤: 1

Boost_Test 单元测试框架UTF

这一生的挚爱 提交于 2020-01-17 07:44:24
/************************************************************************/ /*单元测试框架UTF(Unit Test Framework) 一个用于单元测试的基于命令行界面的测试套件UTF,具有单元测试、检测内存泄露、监控程序运行的功能。 test库将测试程序定义为一个测试模块,由测试安装,测试主体,测试清理和测试运行器四个部分组成。 1:测试主体是测试模块的实际运行部分,由测试用例和测试套件组织成测试树的形式。 2:测试用例是一个包含多个测试断言的函数, 是可以被独立执行测试的最小单元, 各个测试用例之间是无关的, 发生的错误不会影响其他测试用例. 3:测试套件是测试用例的容器,可以嵌套,包含一个或多个测试用例,将多个测试用例分组管理,共享安装/清理代码, 更好的组织测试用例。 4:主测试套件, 任何UTF单元测试程序必须存在唯一一个主测试套件, 它是整个测试树的根节点, 其他测试套件都是它的子节点. 主测试套件的定义可以使用宏BOOST_TEST_MAIN或者 BOOST_TEST_MODULE, 它们必须出现在<boost/test/unit_test.hpp>之前. UTF中的测试断言:BOOST_LEVEL_ITEM LEVEL: WARN 警告级,不增加错误数量,不影响程序运行 CHECK

测试工程师的专业理论面试题

痞子三分冷 提交于 2020-01-16 20:06:42
1 黑盒、白盒测试的区别 答: 2 测试阶段的划分 答: 3 什么是系统测试,什么是单元测试: 答: 单元测试,顾名思义就是面向最小单元进行测试。比如java中的类,C中的函数。 4 如何设计测试用例 答: 测试用例一般是EXCEL表格组成的二维表,包含如下几栏目, 用例编号 用例标题 功能模块名称 默认条件 输入数据 操作步骤 预期结果 优先级 执行结果 编写人 执行人 日期 其他补充项 来源: CSDN 作者: Yslsql 链接: https://blog.csdn.net/qq_26983201/article/details/104003503