测开面试 | 自动化测试之框架篇
一、unittest 原理(https://docs.python.org/3/library/unittest.html)
1、unittest 框架包含哪些内容?
TestFixture:
- SetUp
- TestCase
- TearDown
TestCase
TestSuite
TestRunner
import unittest
class WidgetTestCase(unittest.TestCase):
def setUp(self):
self.widget = Widget('The widget')
def test_default_widget_size(self):
self.assertEqual(self.widget.size(), (50,50),
'incorrect default size')
def test_widget_resize(self):
self.widget.resize(100,150)
self.assertEqual(self.widget.size(), (100,150),
'wrong size after resize')
def tearDown(self):
self.widget.dispose()
def suite():
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase('test_default_widget_size'))
suite.addTest(WidgetTestCase('test_widget_resize'))
return su
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
二、DDT-数据驱动(https://ddt.readthedocs.io/en/latest/example.html)
1、什么是数据驱动?
- 数据驱动测试,即黑盒测试,又称为功能测试
- 数据驱动单元测试,为数据源中的每行,重复进行一种单元测试
- 数据驱动单元测试,常用情况是使用多个输入值测试 API
- “测试数据”与“执行代码”分离
2、DDT 的原理?
- Python 下的数据驱动框架名称也叫 DDT(Data-Driven Tests)
- 效果:使用多个数据运行一条用例,使其表现为多条用例
- 原理:通过 Python 的装饰器,装饰每条用例
3、数据驱动测试的意义?
- 1.代码复用率高,一次编写多条数据复用逻辑
- 2.异常排查效率高,测试执行隔离,数据间无影响
- 3.代码可维护性高,提高代码的易读性
三、Lettuce-行为驱动
1、什么是行为驱动?
- 行为驱动开发,Behavior-Driven Development,简写 BDD
- 在软件工程中,BDD 是一种敏捷软件开发的技术
- 用自然语言书写非程序员可读的测试用例
2、Lettuce 的原理?
- Lettuce 是基于 Python 语言的行为驱动测试框架
- Lettuce 将测试用例和自动化测试代码分离
- Lettuce 写测试用例就像写文本一样清晰
四、KDT-关键字驱动
1、什么是关键字驱动?(https://zh.wikipedia.org/wiki/關鍵字驅動測試)
- 关键字驱动测试(keyword-driven testing)也称为表格驱动测试或行动字驱动测试
- 它将创建测试程序的步骤分为规划和实现两个阶段
- 关键字驱动使不懂代码的人可以完成自动化过程
2、Robot Framework 的原理?
- 基于 RIDE 可视化工具,导入类库(例如:AppiumLibrary)
- 使用 AppiumLibrary 中提供的关键字,实现用例过程
- 使用 RIDE 完成用例的执行和结果的管理
五、生成测试报告
1、如何收集测试结果?(http://tungwaiyip.info/software/HTMLTestRunner.html)
- 使用 HTMLTestRunner.py 生成 HTML 测试报告
2、如何管理测试报告?
- 以时间戳作为报告的名称
六、测试邮件通知
1、如何定义自己的邮件服务?
- 邮箱设置(SMTP)
2、如何自动发送测试报告?
- 使用 SendReport.py 发送测试报告
欢迎关注微信公众号"测试开发Stack"