python自动化面试题(三)

187 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情

1.     做自动化的时候,一般会如何设置等待时间

做自动化测试的时候,一般会有3种等待时间设置,分别是强制等待sleep(),隐式等待implicitly_wait(),显示等待WebDriverWait。

sleep()是不管它什么情况,让程序暂停运行一定时间,时间过后继续运行;缺陷是不智能,设置的时间太短元素还没加载出来,那照样会报错。设置的时间太长,则会浪费时间。一般在调试代码的时候和简单等待的时候使用。

隐式等待设置了一个时间在一段时间内网页是否加载完成,如果完成了,就进行下一步,在设置的时间内没有加载完成,则会报超时加载。它的特点是要等待浏览器对象所有元素全部加载完,而不是只等待我们需要的元素加载完即可,同样也会浪费时间。

显示等待是表明某个条件成立才执行获取元素的操作,也可以等待的时候指定一个最大的时间,如果超过这个时间那么就会抛出一个异常。在显示等待时需要引入两个外部模块,分别是:WebDriverWait和expected_conditions。等待某个浏览器对象driver,直到until达到某个条件,一般是元素可见visibility_of_element_located 时即停止。

WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,'kw')))

2.     如果有验证码,如何进行自动化测试

验证码本身就是为了防止恶意用户对网站的滥用,同时也防自动化工具,在遇到验证码的时候会对自动化测试产生麻烦,一般处理方式为:

  1. 去掉验证码,直接让开发把验证码注释掉即可。

  2. 设置万能验证码,只要在自动化测试的时候输入那个万能验证码,程序就认为验证通过,否则按照原先的验证方式进行验证

  3. 调用验证码模块,如果能够调用到验证码模块,就能够提前知道验证码是什么,从而可以确保每次都能够输入正确的验证码,也就能够绕过验证码进行测试了。如果是短信验证码,可以去短信平台获取验证码。

3.     测试数据你放在哪?

测试数据到底该怎么放,这是面试官很喜欢问的一个问题了。其实没有标准答案,有人说放excel,也有人说放.py脚本中,也有人说放ini配置文件。还有说放json,yaml文件,甚至有的放数据库,五花八门,100个做自动化的小伙伴有100个放的地方。

这里总结下测试的数据到底该怎么放?

首先测试的数据是分很多种的,有登录的账户数据,还有接口的参数,还有邮箱配置的数据等等。对于测试数据存放一般规则是:

1.    对于账号密码,这种管全局的参数,可以用命令行参数单独抽出来,写在配置文件里(如ini)

2.    对于一些一次性消耗的数据,比如注册。可以用随机函数生成

3.    对于一个接口有多组测试的参数,可以参数化,数据放yaml,json,excel都可以

4.    对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理。

5.    对于邮箱配置的一些参数,可以用ini,conf配置文件

6.    对于全部是独立的接口项目,可以用数据驱动方式,用excel/csv管理测试的接口数据。

7.    对于少量的静态数据,比如一个接口的测试数据,也就是2-3组,也可以写到py脚本中

总之不同的测试数据,可以用不同的文件管理

4.     如何设计自动化测试用例

编写测试脚本之前要编写测试用例,而且测试用例不能直接使用手工测试的用例。自动化测试用例是一个完整的场景。用例验证一个功能点,不用试图登录后验证所有的功能再退出。测试用例尽量要么只做正向的逻辑验证,要么做异常逻辑验证,不要试图既做正常逻辑验证又做异常逻辑验证。

用例之间不要产生关联,相互独立,即高内聚低耦合。

测试用例对数据的操作要进行还原,确保测试用例的可回归,能够多次运行。我们可以使用前置条件setUp或后置操作tearDown进行数据的还原。