我推荐你了解下自动化测试与Jenkins | 包含实战

selenium

一:selenium3 安装

  1. pip install selenium (比较慢)
  2. 压缩包安装
  3. https://pypi.org/project/selenium/ (较快)
  4. Download files => selenium-*.tar.gz
  5. 解压,进入文件夹。python setup.py install
  6. pip list 验证是否安装

二:验证使用

  1. https://npm.taobao.org/mirrors/chromedriver/84.0.4147.30/ 安 装Chrome 驱动
  2. 注意 Chrome 版本要对应,否则不会生效, 如何查看 Chrome 版本:
    chrome://version/
  3. 解压 => cd ~/DeskTop && cp ./chromedriver /usr/local/bin && cd
    /usr/local/bin && ls | grep chrome

三 :自动化测试的优缺点
优点:1. 节省人力,避免做重复性的工作

  1. 覆盖范围广,稳定性较高
    缺点:1. 不适合需求变更较快的场景
  2. 不适合周期短的项目

四:selenium 定位元素

  1. find_element_by_id() => 定位 id
  2. find_element_by_name() => tag name
  3. find_element_by_class_name() => class
  4. find_element_by_css_selector => css 选择器

五:selenium 常用 Api

  1. clear() 清空输入
  2. send_keys() 输入
  3. back() 返回
  4. click() 点击
  5. maximize_window() 最大化窗口
  6. getAttribute() 获取元素的属性
  7. getCssValue() 获取 css 属性
  8. getText() 获取文本

六 :selenium 模拟用户操作 (比如鼠标悬停 hover 等等)

  1. 引入 selenium 中用户操作模块
    引 用 : from selenium.webdriver.common.action_chains import
    ActionChains
    使用:ActionChains(driver).click(ele).perform() // perform 是指执行所
    有链式操作
  2. 常见鼠标操作:
  3. click(on_element=None) 单击鼠标左键
  4. context_click(on_element=None) 点击鼠标左键
  5. double_click(on_element=None) 双击左键
  6. move_to_element(to_element) 鼠标移动到某个元素
  7. 常见键盘操作 直接上网搜 selenium send_keys,就有各种详细的介绍
    from selenium.webdriver.common.keys import Keys
  8. 单击键盘
    driver.find_element_by_id(“kw”).send_keys(Keys.SPACE)
  9. 组合键
    driver.find_element_by_id(‘kw’).send_keys(Keys.CONTROL,‘v’)
    driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘a’)
    driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘x’)

七: unittest 单元测试框架

  1. 用 import 语句引入 unittest 模块
  2. 测试的类都继承于 TestCase 类
  3. setUp() 测试前的初始化工作;tearDown()测试后的清除工作(每个测试
    用例都会执行)
    注意:1. 所有类中的方法的入参为 self,定义方法的变量也要”self.
    变量“
  4. 定义测试用例,以 test 开头命名的方法,方法的入参为 self
  5. unittest.main()方法会搜索该模块下所有以 test 开头的测试用
    例方法,并自动指定它们
  6. 注意文件不能用 unittest.py 命名,否则找不到 TestCase
    成功输出. 失败输出 F
  7. 常用断言 api
    self.assertEqual(‘xxx’,‘xxxx’,msg=‘xxxx’) // 判断是否相等,msg 是不
    满足条件的提示语
    self.assertTrue(‘xxxx’,msg='xxxx) // 判断输入的值是否为 true
    self.assertFalse(‘xxxx’,msg=‘xxxxx’) // 判断输入的值是否为 false

八: 件 测试套件 TestSuite, 用以控制测试用例的执行顺序

  1. unittest.TestSuite() // 生成 suite 实例
  2. suite.addTest() // 向其中添加测试用例
  3. unittest.TextTestRunner(verbosity=1) // verbosity 参数控制报告的详细
    程度: 0 简单报告 1 一般报告 2 详细报告
  4. runner.run(suite) // 执行测试用例

九:测试报告的生成,使用 HTMLTestRunner

当前的测试报告可读性非常差,需要有一个可视化的工具,方便我们阅读和
分析测试结果。所以我们就需要这个工具.

  1. 下载地址 http://tungwaiyip.info/software/HTMLTestRunner.html
  2. python => import sys => sys.path => 确定 python 的安装目录, 数组的
    第二个
  3. 将 HTMLTestRunner.py 移动到这个安装目录下
  4. import 验证

代码演示

# -*- coding:utf-8  -*-
# unittest 不用安装直接引入
import unittest
# 时间模块
import time
# 用于辅助生成测试报告,本地copy文件后,一定要移动到python的安装目录下。python安装目录如何查看:import sys => sys.path
import HTMLTestRunner
from selenium import webdriver
# 常用键盘的Keys
# Keys.CONTROL control 键
# Keys.SPACE 空格键...
from selenium.webdriver.common.keys import Keys

# 打开网页
web = webdriver.Chrome()
web.maximize_window()
web.get('https://www.runoob.com/')

class UserTestCase(unittest.TestCase):
    # setUp -> case -> tearDown
    # 每个自动化测试用例开始都会执行的函数,参数都传self
    def setUp(self):
        print('---setUp---')
    # 每个自动化测试用例结束都会执行的函数,参数都传self
    def tearDown(self):
        print('----tearDown----')
    # 普通测试用例,成功会输出. 失败会输出F。测试用例的命名要以test_开头
    def test_firstCase(self):
        web.find_element_by_css_selector('#s').send_keys('hello world')
        res = web.find_element_by_css_selector('#s').get_attribute('value')
        # 常用断言api有以下几种
        # self.assertEqual() 是否相等
        # self.assertTrue() 是否为true
        # self.assertFalse() 是否为false
        self.assertEqual(res,'hello')
        print('firstCase')
    def test_secondCase(self):
        self.assertEqual(1,1,msg='值不相等')
        print('secondCase')
    def test_thirdCase(self):
        print('do anything')

if __name__ == '__main__':
    # unittest.main()
    # TestSuite测试套件,保证测试用例的执行顺序。
    suite = unittest.TestSuite()
    suite.addTest(UserTestCase('test_thirdCase'))
    suite.addTest(UserTestCase('test_secondCase'))
    suite.addTest(UserTestCase('test_firstCase'))
    
    # 格式化测试用例报告的文件名
    file_prefix = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
    # 创建文件句柄,写入测试用例报告并且格式化为HTML文件
    fp = open("./"+file_prefix+"_result.html","wb")
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"第一份测试报告",description=u"测试详情")
    runner.run(suite)
    fp.close()

Jenkins

一:CI 、CD 概念解释

CI:就是将你写的代码,转化为可用的产出。这个产出不同场景下可能代表
不同的东西
CD:将可用的输出提供给用户使用,也就是部署

二:常见的 CI 、CD 工具对比

gitlab CI: 配置文件易于配置而且结合 Docker 让 CI、CD 脱离系统的限制,可以跑在不同的实例上,缺点就是只能使用 gitlab CI 而且不如 Jenkins 灵活


jenkins: 包含了很多丰富的插件,保证了构建系统的灵活性。但是也是双刃剑,牺牲了构建流程的稳定性。新增的管道工作流程:以插件为中心的配置模型


有时很难轻松复制到不同的 Jenkins 实例上

三:Java 环境环境准备

yum list java*
yum install xxxxx
java --version

四:Jenkins 安装

yum的repo文件中没有Jenkins的源,所以我们要手动添加Jenkins的yum

  1. sudo wget -O /etc/yum.repos.d/jenkins.repo
    http://pkg.jenkins-ci.org/redhat/jenkins.repo
  2. sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
  3. sudo yum install -y jenkins
  4. systemctl start jenkins
  5. systemctl status 查看 Jenkins 服务的状态以及启动端口

五:jiekins 默认文件与文件夹

/usr/lib/jenkins/ Jenkins 的 war 包
/etc/sysconfig/jenkins 默认配置
/var/lib/jenkins/users 默认用户文件夹

六:git 配置 webhook

  1. jenkins 主界面 => 系统管理 => 系统配置 => Github 服务器 => 高级
    => 勾选覆盖 Hook URL => 复制生成的 URL
  2. github 项目主界面 => Settings => Webhooks => 新建 webhook =>
    Payload URL 填入刚刚复制的 URL => 点击新建 webhook 或者更新 webhook

七:Jenkins 部署 Vue

  1. 配置 nginx 服务器
    yum list nginx* or yum search nginx* 安装 nginx
    nginx -t 查看和校验 nginx 配置文件
  2. 第一次部署时,手动发布 Vue
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扑天鹰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值