使用 Jmeter 实现对云服务器进行 3000+ 并发压测
对 Unittest 和 Page Object 设计模式进行简单的了解:
Unitest 是 Python 自带的一个单元测试框架,它可以用来做自动化测试框架的用例组织执行框架
- 优点:为我们提供用例组织与执行方法、提供比较方法、提供丰富的日志和清晰的报告等
Unitest 操作的大致流程:
- TestCase 就是大家常说的测试用例
- 然后由TestLoader来加载TestCase到TestSuite(就是过个测试用例集合在一起)
- 最后由TextTestRunner来运行TestSuite,并把运行的结果保存到TextTestResult中
- 通过命令行或者 unittest.main() 来执行时,main()会调用TextTestRunner中的run()方法来执行,也可以直接通过 TextTestRunner来执行测试用例。在Runner执行时,会默认将执行的结果输出到控制台中,为了方便查看输出的结果,我们可以使用 logging 日志来对输出的结果进行管理,可以把结果直接输出到指定的文件中。
而 Page Object 则是Selenium自动化测试开发实践的最佳设计模式之一,通过对界面元素的封装来减少代码的冗余,同时在后期维护中,元素的定位一旦发生变化,我们只需要调整页面元素封装的代码,这样可以提高测试用例的可维护性。
针对前面书写的关于豌豆荚的登录测试用例使用 Page Object 设计模式对书写的代码进行重构,重构的思路如下:
- 将一些常用的内容,(如一些取消更新、跳过元素定位等)抽离出来
- 将元素定位的方法和元素的属性值与业务的代码进行分离
- 将登录功能独立封装成一个模块
- 最后使用unittest来进行综合统筹
代码实现:
1、对 豌豆荚App 的启动信息进行单独的封装
xgCaps.py
from appium import webdriver
import yaml, logging, logging.config
log_file = '../log.conf'
logging.config.fileConfig(log_file)
logging = logging.getLogger()
def appium_caps():
file = open('../appium_two/wdj_capability.yaml', 'r')
data = yaml.load(file, Loader=yaml.FullLoader)
xg_caps = {}
xg_caps['platformName&#