1.线性测试
每个脚本都是独立的,用例维护成本较高,代码重复
2、模块化与类库(例:将“登录”,“退出”封装成单独模块)
提高开发效率,代码重复使用
3.数据驱动
#coding=utf-8 from selenium import webdriver import time values=[‘selenium‘,‘webdriver‘,u‘虫师‘] # 执行循环 for serch in values: driver = webdriver.Firefox() driver.get("http://www.xxxx.com") driver.find_element_by_id("kw").send_keys(serch) time.sleep(3)
不管我们读取的是数组,还是字典、函数,又或者是 csv、txt 文件。我们实现了数据与脚本的分离,
换句话说,我们实现了参数化。我们传一千条数据,通过脚本的执行,可以返回一千条结果出来。
-------------------------------------------------------------------------------------------------------------------------------------------
登录参数化(函数)
函数是我们前面刚介绍的 python 知识,函数可以预先给参数化赋值,借助这个特性,我们可以通过
调用函数的方式对用户名密码进行参数化
userinfo.py
def fun(un=‘testing‘,pw=123456): print "success reader username and password!!" return un,pw
我们为两个参数 un 和 pw 赋了初值,赋值内容如果是字符串需要加引号,如果是数字可以不需要
引号。再次打开 login.py 文件,做如下修改:
#coding=utf-8 from selenium import webdriver from selenium.common.exceptions import NoSuchElementException import unittest, time import userinfo #导入函数 #通过两个变量,来接收调用函数获得用户名&密码 us,pw = userinfo.fun() #打印两个变量 print us,pw def login(self): driver = self.driver driver.maximize_window() driver.find_element_by_id("user_name").clear() driver.find_element_by_id("user_name").send_keys(un) driver.find_element_by_id("user_pwd").clear() driver.find_element_by_id("user_pwd").send_keys(pw) driver.find_element_by_id("dl_an_submit").click() time.sleep(3)
在编写用例之间,笔者再次强调几点编写自动化测试用例的原则:
1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。
2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统
3、尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手
号输错有很多种情况),验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,
很多非正常的逻辑的验证能力不强。(我们尽量遵循用户正常使用原则编写脚本即可)
4、脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。
5、如果对数据进行了修改,需要对数据进行还原。
6、在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。
原文:https://www.cnblogs.com/wzc27229/p/11374249.html