自己曾经写过一个接口自动化的框架,并做了一版本的优化,一直觉得做的还不错,且没依赖现有的框架。
最近因为一些工作的原因,开始又思考之前写的框架的一些缺点及如何优化,所以找到比较有名的httprunner源码来比较和学习下
1、httprunner 提供了比较便利的脚手架代码及命令行运行方式
cli.py脚本里:
parser = argparse.ArgumentParser(description=__description__)
parser.add_argument
提供比较多的命令参数,去实现各种类型的操作
2、在运行用例和用例集的时候,依赖于unittest
api.py. _add_tests. -> _add_test - >run_test - > _run_test运行每个用例
其中的setuphooks , teardownhooks 用到了反射,可以实现对用例数据的动态处理
3、在将用例写入到用例集里面的时候,用到了元编程
for testcase in testcases:
config = testcase.get("config", {})
test_runner = runner.Runner(config)
TestSequense = type('TestSequense', (unittest.TestCase,), {})
主要是为了将json维护的用于与unittest的testsuite, testrunner结合起来
4、对于用例、用例集的定义比较准确,保证了单个用例的可执行性
5、在支持单个接口的情况下,引入了locust,可以进行简单的压力测试
httprunner的代码量并不算多,但还是有很多可以学习和借鉴的地方,很不错的一个框架
继续研究下源码,希望以后写一个更好的接口自动化框架或者针对自己的项目进行一定的改进。