自动化测试模型介绍

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