Python分类测试代码实例汇总


Posted in Python onJuly 23, 2020

1.自动化测试里面的测试用例设计的一些方法

解耦、可以独立运行、需要灵活切换

设计思路: 脚本功能分析(分步骤)和模块化分层(拆分为多模块)

project

login_order.py #登录下单测试用例
category.py #菜单分类测试用例

all_test.py #主入口

login_order.py

# -*- coding: UTF-8 -*-
import unittest
import time
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains


class LoginOrderTestCase(unittest.TestCase):
  def setUp(self):
    print("测试开始")
    self.driver = webdriver.Firefox()
    self.driver.implicitly_wait(20)
    self.base_url = "https://xdclass.net"
    self.driver.get(self.base_url)

  def tearDown(self):
    print("单个测试用例结束")
    pass
    #单个测试用例结束
  
  def test_login_order(self):
    u"登录测试用例"
    driver = self.driver
    #登录框
    login_ele = driver.find_element_by_css_selector("#login")
    ActionChains(driver).click(login_ele).perform()

    sleep(2)
    #查找输入框,输入账号,输入框要提前清理里面的数据
    driver.find_element_by_id("phone").clear()
    driver.find_element_by_id("phone").send_keys("13113777338")
    #查找密码输入框,输入密码
    driver.find_element_by_id("pwd").clear()
    driver.find_element_by_id("pwd").send_keys("123456789")

    #拿到登录按钮
    login_btn_ele = driver.find_element_by_css_selector("button.login")
    #触发点击事件,登录
    login_btn_ele.click()
    #判断登陆是否成功,逻辑-》鼠标移到上面,判断弹窗字符
    #获取鼠标上移的元素
    user_info_ele = driver.find_element_by_css_selector(".user_head_portrait")
    sleep(1)
    #hover触发
    ActionChains(driver).move_to_element(user_info_ele).perform()
    sleep(1)
    #获取用户名称元素
    user_name_ele = driver.find_element_by_css_selector(".img_name > span:nth-child(2)")
    print("===测试结果==")
    print(user_name_ele.text)

    name = user_name_ele.text
    #self.assertEqual(name, u"二当家小D",msg="登录失败")

    video_ele = driver.find_element_by_css_selector("div.hotcourses:nth-child(3) > div:nth-child(2) > div:nth-child(1) > ul:nth-child(1) > li:nth-child(1) > a:nth-child(1) > div:nth-child(1) > img:nth-child(1)")
    video_ele.click()
    sleep(2)

    buy_btn_ele = driver.find_element_by_css_selector(".learn_btn > a:nth-child(1)")

    buy_btn_ele.click()
    print("进入下单页面")
    
if __name__ == '__main__':
    unittest.main()

category.py

# -*- coding: UTF-8 -*-
import unittest
import time
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains

class CategoryTestCase(unittest.TestCase):
  def setUp(self):
    print("测试开始")
    self.driver = webdriver.Firefox()
    self.driver.implicitly_wait(20)
    self.base_url = "https://xdclass.net"
    self.driver.get(self.base_url)


  def tearDown(self):
    print("测试结束")
    #单个测试用例结束
    self.driver.quit()

  def test_menu(self):
    u"弹出菜单测试用例"
    driver = self.driver
    #跳转网页
    sleep(1)

    #定位到鼠标移动到上面的元素
    menu_ele = driver.find_element_by_css_selector("#banner_left_ul > a:nth-child(1) > li:nth-child(1) > span:nth-child(1)")

    #对定位到的元素执行鼠标移动到上面的操作
    ActionChains(driver).move_to_element(menu_ele).perform()
    sleep(2)
    #选中子菜单
    sub_meun_ele = driver.find_element_by_css_selector("#des > li:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > a:nth-child(1)")

    sub_meun_ele.click()
    sleep(2)


if __name__ == '__main__':
  unittest.main()

all_test.py

# -*- coding: UTF-8 -*-
import unittest
import HTMLTestRunner
import login_order ,category
import time

#创建测试集合  
def create_suite():
  print("测试开始")
  suite = unittest.TestSuite()
  suite.addTest(unittest.makeSuite(login_order.LoginOrderTestCase))
  suite.addTest(unittest.makeSuite(category.CategoryTestCase))
  return suite
   

if __name__ == '__main__':
  suite = create_suite()

  #文件名中加了当前时间,为了每次生成不同的测试报告
  file_prefix = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())

  #创建测试报告,此时这个文件还是空文件 wb 以二进制格式打开一个文件,只用于写入,如果文件存在则覆盖,不存在则创建
  fp = open("./"+file_prefix+"_result.html","wb")
  
  # stream定义一个测试报告写入的文件,title就是标题,description就是描述
  runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"小D课堂 测试报告",description=u"测试用例执行情况",verbosity=2)
  runner.run(suite)
  fp.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 正则表达式入门(初级篇)
Dec 07 Python
python中的字典操作及字典函数
Jan 03 Python
Python设计模式之命令模式简单示例
Jan 10 Python
Python 错误和异常代码详解
Jan 29 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
python实现随机梯度下降法
Mar 24 Python
详解Appium+Python之生成html测试报告
Jan 04 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
基于Python3读写INI配置文件过程解析
Jul 23 #Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 #Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 #Python
Python 绘制可视化折线图
Jul 22 #Python
python写文件时覆盖原来的实例方法
Jul 22 #Python
python中return不返回值的问题解析
Jul 22 #Python
Java byte数组操纵方式代码实例解析
Jul 22 #Python
You might like
剖析 PHP 中的输出缓冲
2006/12/21 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
js函数的延迟加载实现代码
2012/10/11 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
python连接mysql并提交mysql事务示例
2014/03/05 Python
Python迭代和迭代器详解
2016/11/10 Python
python爬虫的工作原理
2017/03/05 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
使用Vue.js和MJML创建响应式电子邮件
2021/03/23 Vue.js
大学生职业规划前言模板
2013/12/27 职场文书
小学英语教学反思
2014/01/30 职场文书
安全生产目标责任书
2014/04/14 职场文书
建筑安全生产责任书
2014/07/22 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
党员争先创优承诺书
2015/01/20 职场文书
云台山导游词
2015/02/03 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android