文档章节

RS UnitTest

anqiyouyou
 anqiyouyou
发布于 2017/06/26 14:37
字数 660
阅读 1
收藏 0
点赞 0
评论 0

import os

import unittest

import tempfile

import unittest.mock as mock

from xml.dom.minidom import Document

from revitfarm.tests.basetest import BaseTest

from revitfarm.core.util.const import Const

from revitfarm.plugin.registry.autodesk.revit.regression.revitservertools import RevitServerTools

 

 

class revitservertools(BaseTest):

 

def __init__(self, *args, **kwargs):

super().__init__(*args, **kwargs)

self.logger = mock.MagicMock()

 

def setUp(self,):

with tempfile.TemporaryDirectory() as tmp_dir:

os.environ[Const.WORKER_APP_ROOT] = tmp_dir

local_job_package_root = os.path.join(tmp_dir, "GEN")

os.makedirs(local_job_package_root)

rs_onIIS_exe_path = os.path.join(local_job_package_root, "Regression", "_RegressionTools", "RSInstallUtils", "rsOnIIS.exe")

rs_path = os.path.join(local_job_package_root, "RevitServer", "Enterprise", "Releasex64")

rs_program = os.path.join(local_job_package_root, "Program")

version_id = "2018"

self.revitservertools = RevitServerTools(version_id, rs_onIIS_exe_path, rs_path, rs_program, logger=self.logger)

 

@mock.patch("revitfarm.plugin.registry.autodesk.revit.regression.revitservertools.gr")

def test_set_env(self, gr):

self.revitservertools.set_env("2018")

setEnv_cmd = '@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v RSROLE' + '2018' + ' /t reg_expand_sz /d "Accelerator,Admin,Host" /f'

gr.run_simple_cmd.assert_called_once_with(setEnv_cmd, input=None, success_code=0, logger=self.logger)

 

@mock.patch("revitfarm.plugin.registry.autodesk.revit.regression.revitservertools.gr")

def test_rm_env(self, gr):

self.revitservertools.rm_env("2018")

rmEnv_cmd = '@reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v RSROLE' + '2018' + ' /f'

gr.run_simple_cmd.assert_called_once_with(rmEnv_cmd, input=None, success_code=0, logger=self.logger)

 

@mock.patch("revitfarm.plugin.registry.autodesk.revit.regression.revitservertools.gr")

def test_rsOnIIS_install(self, gr):

with tempfile.TemporaryDirectory() as tmp:

local_work_root = os.path.join(tmp, 'test_reg_job')

# rsOnIIS_exe_path = os.path.join(local_work_root, "Regression", "_RegressionTools", "RSInstallUtils", "rsOnIIS.exe")

rsOnIIS_exe_path = os.path.join(self.test_data_path, 'revitjob', 'test_revit_job.zip.rsOnIIS.exe')

rs_path = os.path.join(local_work_root, "RevitServer", "Enterprise", "Releasex64")

self.revitservertools.rsOnIIS_install('2018', rsOnIIS_exe_path, rs_path)

cmd_line = rsOnIIS_exe_path + " i=\"" + rs_path + "\" r=" + '2018' + " e"

gr.run_simple_cmd.assert_called_once_with(cmd_line, input=None, success_code=0, logger=self.logger)

 

@mock.patch("revitfarm.plugin.registry.autodesk.revit.regression.revitservertools.gr")

def test_rsOnIIS_uninstall(self, gr):

rsOnIIS_exe_path = os.path.join(self.test_data_path, 'revitjob', 'test_revit_job.zip.rsOnIIS.exe')

self.revitservertools.rsOnIIS_uninstall('2018', rsOnIIS_exe_path)

cmd_line = rsOnIIS_exe_path + " u"

gr.run_simple_cmd.assert_called_once_with(cmd_line, input=None, success_code=0, logger=self.logger)

 

def test_analyze_virtual_disk(self):

cmd = "R:\\APP\\RVT\\ECS\\pkg\\Regression\\RegressionTools\\RSInstallUtils\\rsOnIIS.exe u"

subst_result = ['R:\\: => C:\\Regfarm']

expect_result = 'C:\\Regfarm\\APP\RVT\\ECS\\pkg\\Regression\\RegressionTools\\RSInstallUtils\\rsOnIIS.exe u'

#self.revitservertools.analyze_virtual_disk(subst_result, cmd)

self.assertEqual(self.revitservertools.analyze_virtual_disk(subst_result, cmd), expect_result)

 

def test_find_word(self):

with tempfile.TemporaryDirectory() as tmp_dir:

rs_program = os.path.join(tmp_dir, "Program")

os.makedirs(rs_program)

debug_ini = os.path.join(rs_program,"Debug.ini")

word = "RegressionTestServerBasedworkflow=1"

with open(debug_ini, "w+") as file:

file.write("[DebugModes]\nRegressionTestServerBasedworkflow=1\n[DebugTests]\nRegressionTest=2")

self.assertEqual(self.revitservertools.find_word(debug_ini, word), True)

 

def test_find_word_location(self):

with tempfile.TemporaryDirectory() as tmp_dir:

rs_program = os.path.join(tmp_dir, "Program")

os.makedirs(rs_program)

debug_ini = os.path.join(rs_program, "Debug.ini")

with open(debug_ini, "w+") as file:

file.write("[DebugModes]\nRegressionTestServerBasedWorkflow=1\n[DebugTests]\nRegressionTest=2")

self.assertEqual(self.revitservertools.find_word_location(debug_ini, "[DebugModes]"), 0)

self.assertEqual(self.revitservertools.find_word_location(debug_ini, "[DebugTests]"), 49)

 

def test_insert_text(self):

with tempfile.TemporaryDirectory() as tmp_dir:

rs_program = os.path.join(tmp_dir, "Program")

os.makedirs(rs_program)

debug_ini = os.path.join(rs_program, "Debug.ini")

word = "RegressionTestServerBasedworkflow=1"

expect_word = "[DebugMode]\n"+'RegressionTestServerBasedworkflow=1'+"\n"

with open(debug_ini,"w+") as file:

file.write("[DebugMode]\n")

self.assertEqual(self.revitservertools.insert_text(debug_ini,12,word),expect_word)

 

def test_remove_text(self):

with tempfile.TemporaryDirectory() as tmp_dir:

rs_program = os.path.join(tmp_dir, "Program")

os.makedirs(rs_program)

debug_ini = os.path.join(rs_program, "Debug.ini")

word = "RegressionTestServerBasedworkflow=1"

expect = "[DebugModes]\n\n[DebugTests]\nRegressionTest=2"

with open(debug_ini, "w+") as file:

file.write("[DebugModes]\nRegressionTestServerBasedworkflow=1\n[DebugTests]\nRegressionTest=2")

self.assertEqual(self.revitservertools.remove_text(debug_ini, word), expect)

 

def test_check_create_rsn(self):

with tempfile.TemporaryDirectory() as tmp_dir:

local_work_root = os.path.join(tmp_dir, 'test_reg_job')

rs_program = os.path.join(tmp_dir, "Program")

os.makedirs(rs_program)

rsn_ini = os.path.join(rs_program, "RSN.ini")

self.revitservertools.check_create_rsn(rsn_ini)

self.assertEqual(os.path.exists(rsn_ini), True)

with open(rsn_ini, "r") as rsn:

all_text = rsn.read()

self.assertEqual(all_text, "localhost")

 

def test_check_create_debug(self):

with tempfile.TemporaryDirectory() as tmp_dir:

rs_program = os.path.join(tmp_dir,"Program")

os.makedirs(rs_program)

debug_ini = os.path.join(rs_program, "Debug.ini")

self.revitservertools.check_create_debug(debug_ini)

with open(debug_ini, "r") as f:

all_text = f.read()

expect_result = "RegressionTestServerBasedWorkflow=1" in all_text

self.assertTrue(expect_result)

 

def test_get_version_id(self):

with tempfile.TemporaryDirectory() as tmp_dir:

service_path = os.path.join(tmp_dir, "Enterprise", "Release64", "Service", "RS.Service.Protected.Model")

os.makedirs(service_path)

web_config = os.path.join(service_path, "web.config")

doc = Document()

configuration = doc.createElement("configuration")

doc.appendChild(configuration)

runtime = doc.createElement("runtime")

configuration.appendChild(runtime)

assemblyBinding = doc.createElement("assemblyBinding")

assemblyBinding.setAttribute("xmlns", "urn:schemas-microsoft-com:asm.v1")

runtime.appendChild(assemblyBinding)

dependentAssembly = doc.createElement("dependentAssembly")

assemblyBinding.appendChild(dependentAssembly)

assemblyIdentity = doc.createElement("assemblyIdentity")

assemblyIdentity.setAttribute("name", "System.Web.Extensions")

assemblyIdentity.setAttribute("publicKeyToken", "31bf3856ad364e35")

assemblyBinding.appendChild(assemblyIdentity)

system_serviceModel = doc.createElement("system.serviceModel")

configuration.appendChild(system_serviceModel)

diagnostics = doc.createElement("diagnostics")

diagnostics.setAttribute("performanceCounters", "Off")

system_serviceModel.appendChild(diagnostics)

client = doc.createElement("client")

diagnostics.appendChild(client)

endpoint1 = doc.createElement("endpoint")

endpoint1.setAttribute("address", "net.tcp://localhost/ModelService2018/Files.svc/netTcp")

endpoint1.setAttribute("binding", "TcpStreamed")

endpoint2 = doc.createElement("endpoint")

endpoint2.setAttribute("address", "net.tcp://localhost/ModelService2018/Files.svc/upload")

endpoint2.setAttribute("binding", "TcpStreamed")

endpoint3 = doc.createElement("endpoint")

endpoint3.setAttribute("address", "net.tcp://localhost/ModelService2018/Files.svc/download")

endpoint3.setAttribute("binding", "TcpStreamed")

client.appendChild(endpoint1)

client.appendChild(endpoint2)

client.appendChild(endpoint3)

bindings = doc.createElement("bindings")

system_serviceModel.appendChild(bindings)

netTcpBinding = doc.createElement("netTcpBinding")

bindings.appendChild(netTcpBinding)

with open(web_config, "w+") as file:

file.write(doc.toprettyxml(indent=" "))

result = self.revitservertools.get_version_id(web_config)

self.assertEqual(result, "2018")

 

if __name__ == "__main__":

unittest.main()

© 著作权归作者所有

共有 人打赏支持
anqiyouyou
粉丝 0
博文 3
码字总数 1474
作品 0
QA/测试工程师
如何编译google test的例子?

本博客http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! How to build samples of Google Test? In the source of google...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Python 各种测试框架简介(二):unittest

unittest 与 doctest 一样也是 Python 发行版自带的包。如果你听说过 PyUnit(OSC 开源项目页面中就有 PyUnit 的页面),那么这俩其实是同一个东西——PyUnit 是 unittest 的曾用名,因为 Py...

lionets ⋅ 2014/05/25 ⋅ 1

python unittest 深入failfast及实际应用【示例】

failfast是TestResult的一个属性,缺省为False, 作用: 如果failfast为True,一旦测试集中有测试案例failed或发生error立即终止当前整个测试执行,跳过剩下所有测试案例 各种用法: 实现“短路测...

laugh2last ⋅ 2015/09/10 ⋅ 0

unittest 框架学习

今天我学习了,怎么把testcase分到不同的文件中,然后在集中到一个testsuite中一起跑,我还学会了怎么打包,怎么引用。 打包引用,我新建了一个文件夹,目录机构如下: folder --test_suit f...

happyliferao ⋅ 2015/11/16 ⋅ 0

Python自动单元测试实例

Python unittest模块的相关用法 待测源码类:widget.py #!/usr/bin/env python class Widget: 测试代码类:widget_unittest.py #!/usr/bin/env python import sysimport unittestfrom widget......

长平狐 ⋅ 2013/01/06 ⋅ 0

python unittest 基本介绍

1介绍下unittest的基本使用方法: 1.import unittest 2.定义一个继承自unittest.TestCase的测试用例类 3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。 4.定义测试用例,名字以t...

happyliferao ⋅ 2015/11/11 ⋅ 0

Python自动单元测试实例

Python unittest模块的相关用法 待测源码类:widget.py #!/usr/bin/env python class Widget: 测试代码类:widget_unittest.py #!/usr/bin/env python import sysimport unittestfrom widget......

晨曦之光 ⋅ 2012/03/02 ⋅ 1

Selenium Webdriver 学习(1)--install

step 1 首先当然是安装,这边先要安装python www.python.org/download里面有两个版本可以选,一个是python3, 一个是python2,由于之前一直在用2,所以仍然选择2.7.11 step 2 安装setup-too...

terry_hding ⋅ 2016/01/07 ⋅ 0

selenium2-python28-引入unittest单元测试框架-unittest 单元测试框

上一节大概介绍了如何通过selenium ide自动生成unittest框架的测试脚本。本节则要详细的介绍unittest是如何帮助我们完成单元测试的。 unittest框架又名PyUnti框架为python语言的单元测试框架...

丰_申 ⋅ 2016/03/11 ⋅ 0

Django 做单元测试时报错了

IDE用eclipse + PyDev, Django的项目,用apache2启动,有一个test.py。 Django 版本1.6 Python版本2.7.6 settings中UNITTESTFLAG已经设置为True 当我用eclipse的Debug As Python unit-test做......

首席贱人 ⋅ 2015/07/16 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea 整合 vue 启动

刚学习Vue 搭建了一个项目 只能命令启动 Idea里面不会启动 尝试了一下修改启动的配置 如下: 1.首先你要保证你的package.json没有修改过 具体原因没有看 因为我改了这个name的值 就没办法启动...

事儿爹 ⋅ 12分钟前 ⋅ 0

数据仓库技术概述(一看就是架构师写的,对我极其有用)

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于...

gulf ⋅ 13分钟前 ⋅ 0

redis在windows环境的后台运行方法

在后台运行,首先需要安装redis服务,命令为 redis-server.exe --service-install redis.windows.conf --loglevel verbose 启动,命令为 redis-server --service-start 停止,命令为 redis-...

程序羊 ⋅ 15分钟前 ⋅ 0

比特币现金开发者提出新的交易订单规则

本周,四位比特币现金的四位开发者和研究员:Joannes Vermorel(Lokad),AmaurySéchet(比特币ABC),Shammah Chancellor(比特币ABC)和Tomas van der Wansem(Bitcrust)共同发表了一篇关...

lpy411 ⋅ 19分钟前 ⋅ 0

vue获取input输入框的数据

用惯了jQuery,突然使用vue感觉很不习惯,有很多不同的地方,感觉是两个不同的思想来写前端的代码。jQuery是使用选择器($)选取DOM对象,对其进行赋值、取值、事件绑定等操作。而Vue则是通过...

王子城 ⋅ 21分钟前 ⋅ 0

竟然这就是面向对象的游戏设计?!

从程序角度考虑,许多 JavaScript 都基于循环和大量的 if/else 语句。在本文中,我们可了解一种更聪明的做法 — 在 JavaScript 游戏中使用面向对象来设计。本文将概述原型继承和使用 JavaSc...

柳猫 ⋅ 26分钟前 ⋅ 2

git cmd git bash

刚用到了Git,看到windows环境下有两个命令输入窗口 第一个是可视化图形界面,第二个是CMD,第三个是Bash。 Git中的Bash是基于CMD的,在CMD的基础上增添一些新的命令与功能。所以建议在使用的...

东东笔记 ⋅ 28分钟前 ⋅ 0

分布式系统CAP和Base

1、分布式系统 1.1 简介 由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的...

xixingzhe ⋅ 39分钟前 ⋅ 0

查看磁盘占用情况

记一次jenkins构建失败的问题 Build step 'Send build artifacts over SSH' changed build result to UNSTABLE 网上查资料都没明确表明是什么错,回忆之前处理这样的问题。第一时间想到的是不...

ManderSF ⋅ 41分钟前 ⋅ 0

数据库管理提速:SQL解析的探索与应用

前言: SQL解析是一项复杂的技术,一般都是由数据库厂商来掌握,当然也有公司专门提供SQL解析的API。SQL解析与优化是属于编译器范畴,和C语言等其他语言的解析没有本质的区别。其中分为词法分...

java高级架构牛人 ⋅ 47分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部