有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果:
import time
from functoolsimport wraps
import random
def fn_timer(function):
@wraps(function)
def function_timer(*args, **kwargs):
t0= time.time()
result= function(*args, **kwargs)
t1= time.time()
print("Total time running %s: %s seconds" %
(function.__name__, str(t1- t0))
)
return result
return function_timer
@fn_timer
def random_sort(n):
return sorted([random.random() for i in range(n)])
if __name__== "__main__":
random_sort(2000000)
输出:Total time running random_sort: 0.6598007678985596 seconds
使用方式的话,就是在要监控的函数定义上面加上 @fn_timer 就行了
或者
# 可监控程序运行时间
import time
import random
def clock(func):
def wrapper(*args, **kwargs):
start_time= time.time()
result= func(*args, **kwargs)
end_time= time.time()
print("共耗时: %s秒" % round(end_time- start_time, 5))
return result
return wrapper
@clock
def random_sort(n):
return sorted([random.random() for i in range(n)])
if __name__== "__main__":
random_sort(2000000)
输出结果:共耗时: 0.65634秒
2. 使用timeit模块
另一种方法是使用timeit模块,用来计算平均时间消耗。
执行下面的脚本可以运行该模块。
这里的timing_functions是Python脚本文件名称。
在输出的末尾,可以看到以下结果:4 loops, best of 5: 2.08 sec per loop
这表示测试了4次,平均每次测试重复5次,最好的测试结果是2.08秒。
如果不指定测试或重复次数,默认值为10次测试,每次重复5次。
3. 使用Unix系统中的time命令
然而,装饰器和timeit都是基于Python的。在外部环境测试Python时,unix time实用工具就非常有用。
运行time实用工具:
输出结果为:
Total time running random_sort: 1.3931210041 seconds
real 1.49
user 1.40
sys 0.08
第一行来自预定义的装饰器,其他三行为:
real表示的是执行脚本的总时间
user表示的是执行脚本消耗的CPU时间。
sys表示的是执行内核函数消耗的时间。
注意:根据维基百科的定义,内核是一个计算机程序,用来管理软件的输入输出,并将其翻译成CPU和其他计算机中的电子设备能够执行的数据处理指令。
因此,Real执行时间和User+Sys执行时间的差就是消耗在输入/输出和系统执行其他任务时消耗的时间。
4. 使用cProfile模块
5. 使用line_profiler模块
6. 使用memory_profiler模块
7. 使用guppy包
通过官方网站介绍我们可以了解到,pytest是一个非常成熟的全功能的python测试框架,主要有
以下几个特点:
1.直接使用pip命令安装
2.验证安装结果
3.在pytest测试框架中,要遵循以下约束:
pytest进行测试比较简单,我们来看一个实例:
这里我们定义了了两个测试函数,直接打印出结果,下面执行测试:
输出结果中显示执行了多少条案例、对应的测试模块、通过条数以及执行耗时。
pytest断言主要使用Python原生断言方法,主要有以下几种:
可以看到运行结果中明确指出了错误原因是"AssertionError",因为PHP不在str1中。
1.运行指定案例
2.运行当前文件夹包括子文件夹所有用例
3.运行指定文件夹(code目录下所有用例)
4.运行模块中指定用例(运行模块中test_add用例)
5.执行失败的最大次数
使用表达式"--maxfail=num"来实现( 注意:表达式中间不能存在空格 ),表示用例失败总数等于num 时停止运行。
6.错误信息在一行展示
在实际项目中如果有很多用例执行失败,查看报错信息将会很麻烦。使用"--tb=line"命令,可以很好解决这个问题。
本地写一个查询用户信息的接口,通过pytest来调用,并进行接口断言。
软件测试人员能用python做的事情很多,最常见的就是下面四项:1)做自动化测试【web自动化,app自动化,接口自动化】;2)做性能测试;3)开发小工具;4)搭建测试平台。软件测试工程师是被遗忘的技术人。主要是因为软件测试入门门槛比较低,一大批人加入到软件测试行业大军中。但大部分都是一直在做点点点的功能测试,可替代性很强。行业高速发展,单纯功能测试已无法满足企业需求。如果你想增强自身竞争力,就需要有丰富的自动化项目经验,可以根据公司项目灵活的打造一套自动化测试框架。这,都需要从熟练掌握Python编程开始。其实,不管你从事的是什么工作,数据都会是其中的一部分。IT,软件开发,市场等,它们都深度地关乎数据且对于智慧求之若渴。很快数据分析技能就会像编码技能一样的重要,掌握Python编程对你的工作有着极大的提升。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,是一家性价比极高的教育机构