今天讲解简单的自动化测试模型,对于刚接触自动化测试的同学,由于没有编程语言的基础,是搞不懂代码里面的函数、封装、包以及其他概念,只是了解字符串、数组、元组及字典这种最基本的名词,更不懂自动化测试框架了。

这篇笔记来粗略记下学习自动化测试的几种模型。

1、线性测试

  线性测试,顾名思义,就是一条路按照一条直线走到底。它的每个脚本都是独立的,都可以拿出来单独运行,来验证一个功能点,上两段小代码举个栗子:

打开百度主页:

# coding:utf-8

from time import sleep  # 从time中引入sleep

from selenium import webdriver  # 从selenium中引入webdriver

driver = webdriver.Firefox()  # 选择打开的浏览器

driver.maximize_window()   # 浏览器窗口最大化

driver.implicitly_wait(3)  # 隐式等待

driver.get("https://www.baidu.com")  # 获取URL,打开页面

driver.quit()  # 退出相关浏览器

  打开百度主页,并输入查找内容:

# coding:utf-8

from time import sleep  # 从time中引入sleep

from selenium import webdriver  # 从selenium中引入webdriver

driver = webdriver.Firefox()  # 选择打开的浏览器

driver.maximize_window()   # 浏览器窗口最大化

driver.implicitly_wait(3)  # 隐式等待

driver.get("https://www.baidu.com")  # 获取URL,打开页面

search = driver.find_element_by_id("kw")  # 通过id定位搜索框

search.send_keys("selenium")  # 填入"selenium"

sleep(5)  # 直接等待

driver.quit()  # 退出相关浏览器

  以上两段代码,分别做了实现打开百度首页和打开百度首页后输入查找内容的功能,都可以单独拿出来执行。如果需要修改查找访问页面,那么我需要两段代码都需要修改。当这类独立的脚本数量多了起来,去修改这些内容花费的工作量太大,将会失去了自动化的目的。

 2、模块化与类库

login.py

# coding:utf-8

from time import sleep

from selenium import webdriver  # 从selenium中引入webdriver

def login_mantis():

driver = webdriver.Firefox()  # 选择打开的浏览器

driver.maximize_window()  # 浏览器窗口最大化

driver.implicitly_wait(3)  # 隐式等待

driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php")  # 获取URL,打开页面

sleep(1)  # 直接等待

username = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input")  # 通过Xpath定位获取输入账号框

username.send_keys("wuhaobo")  # 输入账号

sleep(1)

password = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input")  # 通过Xpath定位获取输入密码框

password.send_keys("123456")  # 输入密码

sleep(1)

login = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input")  # 通过Xpath定位获取登录按钮

login.click()  # 点击登录按钮

sleep(3)

  上面的代码实现了mantis登录功能。

quit.py

# coding:utf-8

from selenium import webdriver  # 从selenium中引入webdriver

def quit_mantis():

driver = webdriver.Firefox()  # 选择打开的浏览器

driver.quit()  # 退出相关浏览器

  上面的代码实现了mantis退出功能。

do_something_in_mantis.py

# coding:utf-8

from time import sleep  # 从time中引入sleep

from selenium import webdriver  # 从selenium中引入webdriver

import login  # 引入登录模块

import quit  # 引入退出模块

login.login_mantis()  # 调用登录模块

print ">>>以下操作为在登录界面后的操作"

# 需要做的操作放在登录和退出中间

print ">>>以上操作为在登录界面后的操作"

quit.quit_mantis()  # 调用退出模块

上面的代码实现了调用登录模块和退出模块。

如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1085991341,还会有同行一起技术交流。

通过以上代码可以发现,登录模块和退出模块可以让任意操作类脚本调用,省去了该部分代码的重复量,便于维护的同时,也加快了代码的开发速度。

3、数据驱动

直接理解成参数化输入,不同结果输出。

(1)、读取TXT方式

将存好登录的账号密码放置在两个TXT文件中:

 

# coding:utf-8

from time import sleep

from selenium import webdriver  # 从selenium中引入webdriver

username_file = open("G:\\joker_study\\username.txt")  # 打开账号文本路径

username = username_file.read()  # 取出账号

password_file = open("G:\\joker_study\\password.txt")  # 打开密码文本路径

password = password_file.read()  # 取出密码def login_mantis_by_txt():

driver = webdriver.Firefox()  # 选择打开的浏览器

driver.maximize_window()  # 浏览器窗口最大化

driver.implicitly_wait(3)  # 隐式等待

driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php")  # 获取URL,打开页面

sleep(1)  # 直接等待

username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input")  # 获取输入账号框

username_input.send_keys(username)  # 输入账号

sleep(1)

password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input")  # 获取输入密码框

password_input.send_keys(password)  # 输入密码

sleep(1)

login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input")  # 获取登录按钮

login_button.click()  # 点击登录按钮

sleep(3)

driver.quit()  # 退出浏览器

上面的代码实现了从TXT文件中读出账号和密码,再传入函数中,进行登录操作。

(2)、通过函数

userconfig.py

# coding:utf-8

def username_password(username="CJOLER",password="123456"):

return username,password

login.py

# coding:utf-8

from time import sleep

from selenium import webdriver  # 从selenium中引入webdriver

import userconfig  # 引入userconfig文件

un, pw = userconfig.username_password()

print un, pw

def login_mantis_by_txt():

driver = webdriver.Firefox()  # 选择打开的浏览器

driver.maximize_window()  # 浏览器窗口最大化

driver.implicitly_wait(3)  # 隐式等待

driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php")  # 获取URL,打开页面

sleep(1)  # 直接等待

username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input")  # 获取输入账号框

username_input.send_keys(un)  # 输入账号

sleep(1)

password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input")  # 获取输入密码框

password_input.send_keys(pw)  # 输入密码

sleep(1)

login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input")  # 获取登录按钮

login_button.click()  # 点击登录按钮

sleep(3)

driver.quit()  # 退出浏览器

上面的代码实现了将账号密码放在一个函数内,再去调用,进行登录操作。

以上,希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

腾讯大牛教你简单的自动化测试模型(Python+Selenium)的更多相关文章

  1. 简单的自动化测试模型(python+selenium)

             刚接触自动化测试,由于没有编程语言的基础,是搞不懂代码里面的函数.封装.包以及其他概念,只是了解字符串.数组.元组及字典这种最基本的名词,更不懂自动化测试框架了.          ...

  2. python+selenium 自动化测试实战

    一.前言: 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习.(注:项目是针对我们公司内部系统的测试,只能内部网络访问, ...

  3. 从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社

    从原理到代码:大牛教你如何用 TensorFlow 亲手搭建一套图像识别模块 | AI 研习社 PPT链接: https://pan.baidu.com/s/1i5Jrr1N 视频链接: https: ...

  4. 简单实现接口自动化测试(基于python+unittest)

    简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...

  5. 手把手教你玩转SOCKET模型之重叠I/O篇(下)

    四.     实现重叠模型的步骤 作 了这么多的准备工作,费了这么多的笔墨,我们终于可以开始着手编码了.其实慢慢的你就会明白,要想透析重叠结构的内部原理也许是要费点功夫,但是只是学会 如何来使用它,却 ...

  6. 使用jenkins + python + selenium一步步搭建web自动化测试“框架”(1) - 各部件简介

    原先搭建过一个自动化测试框架,迷迷糊糊不求甚解,算是搭建了一个仅限于能用的.根本算不上框架的玩意儿. 现在回过头来好好看看究竟每一步是怎么联系起来的,是怎么运行起来的. 本次博客先说说各部件都是干什么 ...

  7. 篇2 安卓app自动化测试-初识python调用appium

    篇2              安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...

  8. Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)

    Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...

  9. 一步步教你轻松学KNN模型算法

    一步步教你轻松学KNN模型算法( 白宁超 2018年7月24日08:52:16 ) 导读:机器学习算法中KNN属于比较简单的典型算法,既可以做聚类又可以做分类使用.本文通过一个模拟的实际案例进行讲解. ...

随机推荐

  1. PHP __construct() 函数

    实例 函数创建一个新的 SimpleXMLElement 对象,然后输出 body 节点的内容:高佣联盟 www.cgewang.com <?php $note=<<<XML ...

  2. 回首Java——再回首JDK

    如果你是刚要被Java军训的新兵,可有几时对环境搭建而不知所措?又如若你是驰骋Java战场多年的老将,可曾拿起陪伴你许久的82年的JDK回味一番?今天我们就来道一道JDK,重新来认识认识这个既熟悉又陌 ...

  3. 618购物节要到了,Python帮你实现商品有货的微信提醒

    时间过的真快,不知不觉一年已过了一半,又快到618购物狂欢节了,剁手党们都希望无论是618购物节还是双11购物节,都能够买到便宜又实惠的商品,但是真心实惠的东西往往是紧俏的,经常会出现无货的情况,我们 ...

  4. 怎么将PPT文件上传到微信公众号上?

    我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众号添加附件使用“微附件”小程序的教 ...

  5. Ubuntu用户都应该了解的快捷键

    无论我们使用什么操作系统还是什么软件,快捷键都是非常有用的,因为可以在启动应用程序或跳转到所需窗口,可以快速进行很多操作,而无需动鼠标到处点,节省时间和精力,提高效率. 就像在Windows中一样,U ...

  6. springboot配置字符编码

    这边主要有两种方式 方式一.使用传统的Spring提供的字符编码过滤器(Filter的方式) 因为,字符编码过滤器在框架中已经有了,所以我们不需要自己写了.直接进行配置类的实现: @Configura ...

  7. C#开发笔记之03-为什么选择IsNotXXX方法而不是IsXXX方法?

    C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/959 访问. 为什么有时候要选择IsNotXXX方法而 ...

  8. JavaScript call的示例

    作用: 改变函数执行时的作用域 let name = 'global name' function say(){ console.info(arguments) // 调用时接收的参数个数 conso ...

  9. do...while循环语句(水仙花)

    #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h&g ...

  10. Node学习基础之安装node以及配置环境变量

    第一步去node官网下载nodejs 我放在D盘 接着在cmd输入node -v 就能得到node的版本号 还有npm -v 下来进入安装好的目录 nodejs目录 创建两个文件夹 node_cach ...