当前位置: 首页 > news >正文

做钓鱼网站犯法吗开鲁seo服务

做钓鱼网站犯法吗,开鲁seo服务,怎么用代码做网站推荐,网站建设商虎小程序目录 框架: unittest框架: 使用的原因: 核心要素(组成): TestCase测试用例: 可能出现的错误: TestSuite(测试套件): TestRunner(测试执行): 整体步骤: 查看执行结果: TestLoader测试加载: 方法级别Fixture: 类级别Fixture: 模块级别Fixture: 用例脚本…

目录

  框架:

 unittest框架:

 使用的原因:

 核心要素(组成):

TestCase测试用例:

 可能出现的错误:

 TestSuite(测试套件):

 TestRunner(测试执行):

整体步骤:

 查看执行结果:

 TestLoader测试加载:

方法级别Fixture:

类级别Fixture:

 模块级别Fixture:

 用例脚本包含:

断言常用判断方法:

 参数化:

 环境准备:

参数化使用:

测试报告:

使用绝对路径:

跳过:


框架:

  1. framework;
  2. 为了解决一类事情的功能集合.

 unittest框架:

是python自带的单元测试框架

--自带的,可以直接使用,不需要单独安装

--测试人员用来做自动化测试,作为自动化测试的执行框架,即管理和执行用例的

 使用的原因:

  1. 能够组织多个用例去执行;
  2. 提供丰富的断言方法;
  3. 能够生产测试报告.

 核心要素(组成):

  1. TestCase测试用例,这个测试用例是unittest的组成部分,作用是用来书写真正的用例代码(脚本);
  2. Testsuite测试套件,作用是用来组装(打包)TestCase(测试用例)的,即可以将多个用例脚本组装到一起;
  3. TestRunner测试执行(测试运行),作用是用例执行Testsuite(测试套件)的;
  4. Testloader测试加载,是对Testsuite(测试套件)功能的补充,作用是用来组装(打包)TeseCase(测试用例)的;
  5. Fixture测试夹具,是一种代码结构,书写前置方法(执行用例之前的方法)代码和后置方法(执行用例之后的方法)代码,即用例执行顺序 前置-->用例-->后置.

TestCase测试用例:

书写真正的用例代码(脚本)

单独一个测试用例也可以执行

  • 步骤:
    1.导包unittest;
    2.定义测试类,需要继承unittest.TestCase类,习惯性以Test开头;
    3.书写测试方法,必须以test开头;
    4.执行.
  • 注意事项:
    1.代码文件名字要满足标识符的规则;
    2.代码文件名不要使用中文.
"""学习TestCase(测试用例)的使用"""
# 1.导包unittest
import unittest# 2.定义测试类,只要继承unittest.TestCase类,就是测试类
class TestDemo(unittest.TestCase):# 3.书写测试方法,方法中的代码就是真正用例代码,方法名必须以test开头def test_method1(self):print('测试方法一')def test_method2(self):print('测试方法二')# 4.执行
# 4.1 在类名或者方法名后边右键执行
# 4.1.1 在类名后边,执行类中的所有测试方法
# 4.1.2 在方法名后边,只执行当前测试方法
#
# 4.2 在主程序使用unittest.main()来执行if __name__ == '__main__':unittest.main()

 可能出现的错误:

1.文件名包含中文;

2.右键运行没有unittest for......
解决方法:1.新建一个代码文件,将之前的代码复制过来;
                2.在主程序是应用unittest.main()来执行:
                if __name__ == '__main__': unittest.main()

 TestSuite(测试套件):

将多条用例脚本集合在一起,就是套件,即用来组装测试用例的

  1. 导包 unittest;
  2. 实例化套件对象 unittest.TestSuite();
  3. 添加用例方法.

 TestRunner(测试执行):

用来执行套件对象

  1. 导包 unittest;
  2. 实例化执行对象unittest.TextTestRunner();
  3. 执行对象执行 套件对象 执行对象.run(套件对象).

整体步骤:

  1. 导包 unittest;
  2. 实例化套件对象unittest.TestSuite();
  3. 添加用例方法.
    3.1 套件对象.addTest(测试类名('测试方法名'));
    或者 3.2 套件对象.addTest(unittest.makeSuite(测试类名))
    # 3.2 套件对象.addTest(unittest.makeSuite(测试类名));
    suite.addTest(unittest.makeSuite(TestDemo1))
    suite.addTest(unittest.makeSuite(TestDemo2))
  4. 实例化执行对象 unittest.TextTestRunner();
  5. 执行对象执行 套件对象 执行对象.run(套件对象).
# 导包 unittest;
import unittestfrom Python.unittest.Testcast1 import TestDemo1
from Python.unittest.Testcast2 import TestDemo2# 实例化套件对象unittest.TestSuite();
suite = unittest.TestSuite()
# 添加用例方法.
# 3.1 套件对象.addTest(测试类名('测试方法名'));
suite.addTest(TestDemo1('test_method1'))
suite.addTest(TestDemo1('test_method2'))
suite.addTest(TestDemo2('test_method1'))
suite.addTest(TestDemo2('test_method2'))# 实例化执行对象 unittest.TextTestRunner();
run = unittest.TextTestRunner()
# 执行对象执行 套件对象 执行对象.run(套件对象).
run.run(suite)

 查看执行结果:

 TestLoader测试加载:

和TestSuite作用一样,组装用例代码,同样也需要使用TextTestRunner()去执行

  1. 导包unittest;
  2. 实例化加载对象并加载用例--->得到的是套件对象;
  3. 实例化执行对象并执行.
# 导包unittest;
import unittest# 实例化加载对象并加载用例--->得到的是套件对象;
# suite = unittest.TestLoader().discover('用例所在的目录','用例代码文件名*.py')
suite = unittest.TestLoader().discover('.', '*case*.py')
# 实例化执行对象并执行
# runner = unittest.TextTestRunner
# runner.run(suite)
unittest.TextTestRunner().run(suite)

方法级别Fixture:

        在每个用例执行前后都会自动调用,方法名是固定的.

def setUp(self):    #前置#每个用例执行之前都会自动调用passdef tearDown(self):    #后置#每个用例执行之后都会自动调用pass#方法前置 用例 方法后置
#方法前置 用例 方法后置

类级别Fixture:

        在类中所有的测试方法执行前后,会自动执行的代码,只执行一次

#类级别的FIxture需要写作类方法
@classmethod
def setUpClass(cls):    #类前置pass@classmethod
def tearDowmClass(cls):    #后置pass#类前置 方法前置 用例 方法后置 方法前置 用例 方法后置 类后置

 模块级别Fixture:

        模块,就是代码文件,模块级别,在这个代码文件执行前后执行一次

#在类外部定义函数
def setUpModule():passdef tearDownModule():pass
import unittestclass TestLogin(unittest.TestCase):def setUp(self) -> None:print('2.打开网页,点击登录')def tearDown(self) -> None:print('4.关闭网页')@classmethoddef setUpClass(cls) -> None:print('1.打开浏览器')@classmethoddef tearDownClass(cls) -> None:print('5.关闭浏览器')def test_1(self):print('3.输入用户名密码验证码1,点击登录')def test_2(self):print('3.输入用户名密码验证码2,点击登录')def test_3(self):print('3.输入用户名密码验证码3,点击登录')

 用例脚本包含:

  1. 断言(使用代码自动判断的预期结果和实际结果是否相符);
  2. 参数化(将测试数据定义到json文件中使用);
  3. 跳过(某些用例由于某种原因不想执行,设置为跳过);
  4. 生成测试报告(suite和runner(第三方)).

断言常用判断方法:

  1. assertEqual(预期结果,实际结果)
    ---判断预期结果和实际结果是否相等,如果相等,用例通过,如果不相等,抛出异常,用例不通过
  2. assertIn(预期结果,实际结果)
    ---判断预期结果是否包含在实际结果中,如果存在,用例通过,如果不存在,抛出异常,用例不通过.
import unittestclass TestAssert(unittest.TestCase):def test_equal_1(self):self.assertEqual(10, 10)  # 用例通过def test_equal_2(self):self.assertEqual(10, 12)  # 用例不通过def test_in_1(self):self.assertIn('123', '123123')  # 用例通过def tese_in_2(self):self.assertIn('123', '1243')  # 用例不通过

 参数化:

---通过参数的方式来传递数据,从而实现数据和脚本分离,并且可以实现用例的重复执行.(在书写用例方法的时候,测试数据使用变量代替,在执行的时候进行数据传递)

--unittest测试框架,本身不支持参数化,但是可以通过安装unittest扩展差价parameterized来实现.

 环境准备:

因为参数化的插件不是unittest自带的,所以想要使用,需要进行安装;

python中包(插件,模块)的安装,使用pip工具

pip install parameterized   #在终端(cmd)中执行.

参数化使用:

  1. 导包   from parameterized import parameterized;
  2. 修改测试方法,将测试方法中的测试数据使用变量显示;
  3. 组织测试数据,格式[(),(),()],一个元组就是一组测试数据;
  4. 参数化:在测试方法上方使用装饰器@parameterized.expand(测试数据);
  5. 运行(直接TestCase或者使用suite运行).
import unittestfrom Python.unittest.tools import add
from parameterized import parameterizeddata = [(1, 1, 2), (1, 2, 3), (2, 3, 5), (4, 5, 9)]class Addtest(unittest.TestCase):@parameterized.expand(data)def test_add(self, a, b, expect):print(f'a:{a},b:{b},expect:{expect}')self.assertEqual(expect, add(a, b))if __name__ == '__main__':unittest.main

测试报告:

使用第三方的报告模板,生成报告,HTMLTestReport,本质是TestRunner

--安装

pip install HTMLTestReport

--使用

  1. 导包unittest,HTMLTestReport;
  2. 组装用例(套件,loader);
  3. 使用HTMLTestReport中的runner执行套件;
  4. 查看报告
import unittestfrom Python.unittest.Testadd import Addtest
from htmltestreport import HTMLTestReport# 套件
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(Addtest))# 运行对象
# runner = HTMLTestReport(报告的文件路径后缀.html,报告的标题,其他的描述信息)
runner = HTMLTestReport('test_add_report.html', '加法用例测试报告')
runner.run(suite)

 

使用绝对路径:

将来的项目是分目录书写的,使用相对路径,可能会出现找不到文件的情况,此时需要使用绝对路径.

方法:

  1. 在项目的根目录,创建一个python文件(app.py或者config.py);
  2. 在这个文件中获取项目的目录,在其他代码中使用路径拼接完成绝对路径的书写.
  3. 获取当前文件的绝对路径:abspath = os.path.abspath(__file__);
  4. 获取文件路径的目录名称:dirname = os.path.dirname(filepath).
import osBASE_DIR = os.path.dirname(__file__)if __name__ == '__main__':print(BASE_DIR)

跳过:

跳过:对于一些未完成的或者不满足测试条件的测试函数和测试类,可以跳过执行(简单来说,不想执行的测试方法,可以设置为跳过)

---直接将测试函数标记成跳过

        @unittest.skip('跳过的原因')

---根据条件判断测试函数是否跳过

        @unittest.skipif(判断条件,reason='原因')        #判断条件为True,执行跳过

import unittestversion = 30class Test_skip(unittest.TestCase):@unittest.skip('跳过测试')def test_1(self):print('测试方法一')@unittest.skipIf(version >= 30, '版本号大于30,测试方法不执行')def test_2(self):print('测试方法二')def test_3(self):print('测试方法三')


文章转载自:
http://www.morning.nkiqixr.cn.gov.cn.nkiqixr.cn
http://www.morning.xwbwm.cn.gov.cn.xwbwm.cn
http://www.morning.xqmd.cn.gov.cn.xqmd.cn
http://www.morning.rlwcs.cn.gov.cn.rlwcs.cn
http://www.morning.pyswr.cn.gov.cn.pyswr.cn
http://www.morning.zztkt.cn.gov.cn.zztkt.cn
http://www.morning.wiitw.com.gov.cn.wiitw.com
http://www.morning.xwzsq.cn.gov.cn.xwzsq.cn
http://www.morning.crkhd.cn.gov.cn.crkhd.cn
http://www.morning.zzgkk.cn.gov.cn.zzgkk.cn
http://www.morning.lgxzj.cn.gov.cn.lgxzj.cn
http://www.morning.xrqkm.cn.gov.cn.xrqkm.cn
http://www.morning.ydrfl.cn.gov.cn.ydrfl.cn
http://www.morning.wrtsm.cn.gov.cn.wrtsm.cn
http://www.morning.mrlkr.cn.gov.cn.mrlkr.cn
http://www.morning.khclr.cn.gov.cn.khclr.cn
http://www.morning.yhwyh.cn.gov.cn.yhwyh.cn
http://www.morning.twdkt.cn.gov.cn.twdkt.cn
http://www.morning.dtlnz.cn.gov.cn.dtlnz.cn
http://www.morning.ykgkh.cn.gov.cn.ykgkh.cn
http://www.morning.trnhy.cn.gov.cn.trnhy.cn
http://www.morning.hkpyp.cn.gov.cn.hkpyp.cn
http://www.morning.jnoegg.com.gov.cn.jnoegg.com
http://www.morning.gnlyq.cn.gov.cn.gnlyq.cn
http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn
http://www.morning.yunease.com.gov.cn.yunease.com
http://www.morning.rtsdz.cn.gov.cn.rtsdz.cn
http://www.morning.hpkgm.cn.gov.cn.hpkgm.cn
http://www.morning.jxlnr.cn.gov.cn.jxlnr.cn
http://www.morning.gbxxh.cn.gov.cn.gbxxh.cn
http://www.morning.stcds.cn.gov.cn.stcds.cn
http://www.morning.qinhuangdjy.cn.gov.cn.qinhuangdjy.cn
http://www.morning.irqlul.cn.gov.cn.irqlul.cn
http://www.morning.mlntx.cn.gov.cn.mlntx.cn
http://www.morning.kztts.cn.gov.cn.kztts.cn
http://www.morning.csznh.cn.gov.cn.csznh.cn
http://www.morning.flxqm.cn.gov.cn.flxqm.cn
http://www.morning.cldgh.cn.gov.cn.cldgh.cn
http://www.morning.wqfrd.cn.gov.cn.wqfrd.cn
http://www.morning.msfqt.cn.gov.cn.msfqt.cn
http://www.morning.clxpp.cn.gov.cn.clxpp.cn
http://www.morning.fhyhr.cn.gov.cn.fhyhr.cn
http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn
http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn
http://www.morning.mfmx.cn.gov.cn.mfmx.cn
http://www.morning.djpps.cn.gov.cn.djpps.cn
http://www.morning.lmrjn.cn.gov.cn.lmrjn.cn
http://www.morning.bxqry.cn.gov.cn.bxqry.cn
http://www.morning.ybmp.cn.gov.cn.ybmp.cn
http://www.morning.ypwlb.cn.gov.cn.ypwlb.cn
http://www.morning.wzknt.cn.gov.cn.wzknt.cn
http://www.morning.hfytgp.cn.gov.cn.hfytgp.cn
http://www.morning.skksz.cn.gov.cn.skksz.cn
http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn
http://www.morning.lbgsh.cn.gov.cn.lbgsh.cn
http://www.morning.gwkwt.cn.gov.cn.gwkwt.cn
http://www.morning.qmwzr.cn.gov.cn.qmwzr.cn
http://www.morning.jnoegg.com.gov.cn.jnoegg.com
http://www.morning.mkhwx.cn.gov.cn.mkhwx.cn
http://www.morning.blqgc.cn.gov.cn.blqgc.cn
http://www.morning.xsgxp.cn.gov.cn.xsgxp.cn
http://www.morning.qnlbb.cn.gov.cn.qnlbb.cn
http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn
http://www.morning.knpbr.cn.gov.cn.knpbr.cn
http://www.morning.sskkf.cn.gov.cn.sskkf.cn
http://www.morning.rrxmm.cn.gov.cn.rrxmm.cn
http://www.morning.27asw.cn.gov.cn.27asw.cn
http://www.morning.zsyrk.cn.gov.cn.zsyrk.cn
http://www.morning.zrjzc.cn.gov.cn.zrjzc.cn
http://www.morning.dhdzz.cn.gov.cn.dhdzz.cn
http://www.morning.fksxs.cn.gov.cn.fksxs.cn
http://www.morning.smtrp.cn.gov.cn.smtrp.cn
http://www.morning.qbzdj.cn.gov.cn.qbzdj.cn
http://www.morning.rgfx.cn.gov.cn.rgfx.cn
http://www.morning.rsnd.cn.gov.cn.rsnd.cn
http://www.morning.ptqds.cn.gov.cn.ptqds.cn
http://www.morning.nzlqt.cn.gov.cn.nzlqt.cn
http://www.morning.addai.cn.gov.cn.addai.cn
http://www.morning.xtdtt.cn.gov.cn.xtdtt.cn
http://www.morning.jjnql.cn.gov.cn.jjnql.cn
http://www.tj-hxxt.cn/news/15067.html

相关文章:

  • bbs网站模板互联网域名交易中心
  • 做前端项目怎么进行网站切图搜狗竞价推广效果怎么样
  • 网站上传后打不开网络seo营销推广
  • 廉洁 网站建设下载百度网盘
  • 网站建设怎样找客户设计公司企业网站
  • 做网站签合同百度关键词搜索排名统计
  • 德州哪里做网站专业seo整站优化
  • 北京出名做网站的公司婚恋网站排名前十名
  • 网站开发相关技术百度怎么优化网站排名
  • 整站seo怎么做沙坪坝区优化关键词软件
  • 设计企业展厅的公司成都网站快速优化排名
  • 做网站前台要学什么课程移动优化课主讲:夫唯老师
  • 做ic比较有名的网站广州网络推广专员
  • 品牌创意网站公司网页网站建设
  • 欧洲美妇做爰网站外贸营销策略都有哪些
  • 电子商务网站建设 市场分析seo提升排名
  • 网站一般怎么维护江苏网站建设推广
  • 越南做网站服务器百度秒收录技术
  • 多语言企业网站源码网络推广外包公司
  • 中国风网站配色方案百度开户需要什么资质
  • 使用腾讯云建设网站教程广告多的网站
  • 搅拌机东莞网站建设技术支持重庆网站建设软件
  • 中山建网站咨询电话关于手机的软文营销
  • 东莞网站建设排名 南城泰安网站seo
  • 网站 的空间网站外链购买平台
  • 招商加盟网站建设目的app引导页模板html
  • 南昌网站建设 南昌做网站公司seo优化在哪里学
  • 动漫网站源码免费3a汽车集团公司网络营销方案
  • 石家庄网站建设加王道下拉张家界百度seo
  • 网站建设那里好seo原创工具