Python写自动化之以不同优先级启动进程

在windows上的进程,可以设置优先级,如下图

那么,如果我们在自动化测试过程中,需要设置进程的优先级,如何来做呢?

下面使用win32相关的接口实现此功能,代码如下:

# 获取用户句柄
        hToken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), win32con.TOKEN_DUPLICATE | win32con.TOKEN_ADJUST_DEFAULT                                            |win32con.TOKEN_QUERY | win32con.TOKEN_ASSIGN_PRIMARY)
        hNewToken = hToken
        authority = 0x0002000
        if securityLevel != "":
            authority = 0x0002000
        if securityLevel.lower() == "low":
            authority = 0x0001000
            hNewToken = win32security.DuplicateTokenEx(hToken, win32security.SecurityImpersonation, 0, win32security.TokenPrimary, None)
        # 构建相应级别的sid
        sid = win32security.SID()
        sid.Initialize((0, 0, 0, 0, 0, 16), 1)
        sid.SetSubAuthority(0, authority)

        # 将sid设置到用户句柄
        win32security.SetTokenInformation(hNewToken, win32security.TokenIntegrityLevel,(sid, win32security.SE_GROUP_INTEGRITY))

        commandline = procPath + " " + param

        # 启动程序
        si = win32process.STARTUPINFO()
        win32process.CreateProcessAsUser(hNewToken, None, commandline, None, None, False, 0, None, None, si)

这样,我们就可以使用不同优先级启动了相应的进程~·~

转载请注明:http://blog.csdn.net/sogouauto

探索测试奥义,交流测试技术,欢迎关注“搜狗测试”

时间: 2024-10-04 01:27:43

Python写自动化之以不同优先级启动进程的相关文章

Python写自动化之启动进程并获取进程输出

当我们需要执行外部命令或自己写一个自动化执行器时,需要使用到启动进程并获取输出的操作 首先,我们启动进程采用Python的subprocess模块,为了保证标准输出和标准错误输出能够正常运行,启动两个线程来检测输出结果部分 class Daemon(threading.Thread): def __init__(self, workDir, logFunction=None, *args): threading.Thread.__init__(self) self.process = None

Python写自动化之写一个Windows 服务

Python 写windows 服务,需要使用 pywin32包. 直接上代码: #encoding=utf8 ''' Created on 2014-7-1 @author: wangmengnan ''' import os import sys import win32serviceutil import win32service import win32event class PythonService(win32serviceutil.ServiceFramework): #服务名 _

Python写自动化之logging日志写入

日志写入是我们日常工作中常用到的功能,我们可以直接使用写文件的方式来以自己的方式写日志,另外,当我们在一个比较大的项目中,涉及到日志写入时,一般会使用logging模块来进行日志的写入,第一步,先写一个单例,创建一个logger对象: def _instance(): global logger if logger is None: logging.config.fileConfig(os.path.join(util.get_current(), "logger.conf")) lo

Python写自动化之构造Multipartform-data发请求

在HTTP协议的规范中会将http请求分为三个部分:状态行,请求头,请求体.在发送HTTP请求时,需要在请求头中注明发送的方法,这些方法包括:OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT.其中GET和POST是最为普遍被使用的.有关POST和GET的区别,知识库中已经有同学进行了表述,这里主要介绍一下multipart/form-data请求具体是怎么一回事. 在普通的HTML Form Post请求中,它会在头信息里使用Content-Lengt

Python写自动化之ini文件的读写

在我们写一些测试工具时,经常会需要使用到配置文件,此时一般选用ini文件是比较合适的 标准并且可以通过参数命名知道参数的含义,那么使用Python如何进行ini文件的读写呢? 首先看下,读取ini文件,我们直接使用Python自带的模块ConfigParser来进行配置文件的读写 看下代码吧 def ReadConfig(configPath): configDict = {} cf = ConfigParser.ConfigParser() cf.read(configPath) sessio

Python写自动化之获取文件的MD5值

使用Python 获取文件的MD5 值是一件很简单的事情,Python 提供了md5 和 hashlib 两个模块,都可以获取到文件的md5值. 代码如下: #获取文件的MD5值,适用于小文件 def getFileMD5(self,filepath): if self.isFile(filepath): f = open(filepath,'rb') md5obj = hashlib.md5() md5obj.update(f.read()) hash = md5obj.hexdigest()

Python写自动化之SVN更新

在远程机器上执行脚本时,为了能够保证脚本的实时性,我们一般会将脚本存放到SVN上,远程机器通过SVN的操作去更新脚本: SVN更新脚本只需要2步就可以实现了,这个地方使用到pysvn库,看下实现 # 初始化client self.client = pysvn.Client() self.client.set_default_username(self.username) self.client.set_default_password(util.decrypt_des(self.password

Python写自动化之图标锁定到任务栏或删除图标

这个功能在windows上测试安装卸载时,有时会用到,网上查到的两种语言的版本如下: C#版: Shell shell = new Shell(); Folder folder = shell.NameSpace(Path.GetDirectoryName(appPath)); FolderItem app = folder.ParseName(Path.GetFileName(appPath)); string sVerb = isLock ? "锁定到任务栏(&K)" :

Python写自动化之http文件下载

在自动化脚本中,文件下载是比较常见的操作,一般情况下,我们会将文件放到某个http服务器上,这时,当脚本中需要这个文件时,就需要使用到http下载的功能了 最基本的下载功能实现 实现最基本的功能,传入文件下载路径和文件本地保存路径,下载到本地 def DownloadFile(url,savePath): """ | ##@函数目的: 下载文件 | ##@参数说明:url:文件的url路径 | ##@参数说明:savePath:文件保存到的位置 | ##@返回值: "