python实现hive自动化测试

本程序主要实现hive权限测试。系统中有管理员用户single和测试用户test。在路径/home/test/下,将用例和预期结果写在xml文件中。


行过程:kinit single用户,beeline -u -e登录并执行对test用户对应角色回收和赋予权限的语句;kinit
test用户,beeline -u
-e去执行测试语句并保存执行结果到tmp文件中;在tmp文件中查找预期关键字,得出该测试pass还是fail的结果,统计测试结果。

#!/usr/bin/python
#coding:utf-8
#by cvv54

import sys
import os
import re

try:
    import xml.etree.cElementTree as ET
except ImportError:
    import xml.etree.ElementTree as ET

try:
    tree = ET.parse("/home/test/case/usecase.xml")
    #root = ET.fromstring(country_string)
    root = tree.getroot()
except Exception,e:
    print "Error:cannot parse file:usecase.xml."
    sys.exit(1)
print root.tag,"---",root.attrib
for child in root:
    print child.tag,"---",child.attrib

passed=0
failed=0    

for case in root.findall(‘case‘):
    pre = case.find(‘pre‘).text
    perform = case.find(‘perform‘).text
    expect = case.find(‘expect‘).text.strip(‘\n‘)
    id = case.get("id")

    print "key words are :"    
    print expect

    for each in pre.split(‘;‘):
#        print each
        if not each.strip()==‘‘:
            command = each.strip(‘\n‘)
            os.environ[‘command‘]=str(command)
            print command
        
            os.system("kdestroy")
            os.system("kinit -kt /etc/security/keytabs/single.keytab single")
            os.system(‘beeline -u "jdbc:hive2://gateway.xxx.xxx:10000/;principal=single" -e "$command;" &>>log‘)

    for each in perform.split(‘;‘):
#        print each
        if not each.strip()==‘‘:
            command = each.strip(‘\n‘)
            os.environ[‘command‘]=str(command)
            print command
        
            os.system("kdestroy")
            os.system("kinit -kt /etc/security/keytabs/test.keytab test")
            os.system(‘beeline -u "jdbc:hive2://gateway.xxx.xxx:10000/;principal=single" -e "$command;" &>tmp‘)
   
    f=open(‘tmp‘)
    flag=0
    for line in f:
#        print "line is :"
#        print line
        match=re.findall(expect,line)
        if match != []:
            passed+=1
            flag=1
        
    if flag == 0:
        failed+=1            
        print(id)
    
    os.system("cat tmp>>log")
    os.system("rm -f tmp")

print "passed:"
print passed
print "failed:"
print failed

os.system(‘mv log `date "+%Y-%m-%d~%H-%M-%S"`‘)

我的xml是这样写的:

<?xml version="1.0" encoding="utf-8"?>

<test>

<case id="001" name="SHOW TABLES">

<pre>

REVOKE ALL ON SERVER server1 FROM ROLE test_role; GRANT ALL ON URI TO ROLE test_role;

</pre>

<perform>

SHOW TABLES;

</perform>

<expect>

tab_name

</expect>

</case>

<case id="002" name="SHOW TABLES">

<pre>

REVOKE ALL ON SERVER server1 FROM ROLE test_role; 

</pre>

<perform>

SHOW TABLES;

</perform>

<expect>

FAILED: SemanticException No valid privileges

</expect>

</case>

<case id="003" name="SHOW CREATE TABLE" privilege="SELECT">

<pre>

CREATE TABLE IF NOT EXISTS test_table1  (id INT,name STRING,salary FLOAT,street STRING,city STRING,state STRING,zip INT) PARTITIONED BY (address STRING) row format delimited fields terminated by ‘ ‘;

REVOKE ALL ON SERVER server1 FROM ROLE test_role;GRANT SELECT ON TABLE test_table1 TO ROLE test_role;

</pre>

<perform>

SHOW CREATE TABLE test_table1;

</perform>

<expect>

createtab_stmt 

</expect>

</case>

<case id="004" name="SHOW CREATE TABLE" privilege="INSERT">

<pre>

REVOKE ALL ON SERVER server1 FROM ROLE test_role;GRANT INSERT ON TABLE test_table1 TO ROLE test_role;

</pre>

<perform>

SHOW CREATE TABLE test_table1;

</perform>

<expect>

createtab_stmt 

</expect>

</case>

<case id="005" name="SHOW CREATE TABLE" >

<pre>

REVOKE ALL ON SERVER server1 FROM ROLE test_role;

</pre>

<perform>

SHOW CREATE TABLE test_table1;

</perform>

<expect>

FAILED: SemanticException No valid privileges

</expect>

</case>

</test>
时间: 2024-10-19 09:09:48

python实现hive自动化测试的相关文章

python 调用hive查询实现类似存储过程

需求:数据仓库中所有表的定义结构保存到新的文件中,保存后类似下面数据,重复的数据只保留7月份即可 ****************ods_log_info*****************lid string uid string mb_uid string operation string module string result string ts string remark1 string remark2 string remark3 string ****************ods_

python+requests接口自动化测试框架实例详解教程

转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自

python+requests接口自动化测试框架实例详解

前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自己写python的接口自动化测试框架,由于本人也是刚学习python,这套自动化框架目前已经基本完成了,于是进行一些总结,便于以后回顾温习,有许多不完善的地方,也遇到

shell实现hive自动化测试

本程序主要实现hive权限测试.系统中有管理员用户single和测试用户test.在路径/home/test/下,将用例的预置条件写在input文件夹内,每个用例对应一个input文件,命名为x-y~z.q(其中xyz都是数字):将用例需要执行的语句放在case文件夹内,命名为case_x.q;将预期结果写入expect文件夹,命名为expect_x:执行结果输出到output文件夹中,命名为x-y~z.q 执行过程:kinit single用户,beeline -u -f登录并执行input文

Python selenium+webdriver 自动化测试例子

#coding=utf-8 from selenium import webdriver #引入selnium模块的webdriver包# import time #引入time函数# browser=webdriver.Firefox() #初始化打开Firefox浏览器# browser.get(") #打开百度网站#   time.sleep(0.3)#休眠0.3秒# browser.find_element_by_id("kw").send_keys("se

基于python的接口自动化测试框架

公司内部的软件采用B/S架构,大部分是数据的增删改查,由于还在开发阶段,所以UI界面的变化非常快,难以针对UI进行自动化测试,那样会消耗大量的精力与时间维护自动化脚本.针对此种情况,针对接口测试较为有效. 工具选择 针对接口测试的工具也很多,例如soup UI, robot framework ,甚至jmeter这样的性能测试工具也可以进行接口测试. robot framework测试框架有很多的第三方库可以使用,采用的是填表的方式进行,较容易上手,但是无法深入底层的了解客户端与服务器的交互过程

【转】Python + Android + Uiautomator自动化测试

1.首先来介绍下UIAutomator工具 UIAutomator是Android官方推出的安卓应用界面自动化测试工具,是最理想的针对APK进行自动化功能回归测试的利器. 2.UIAutomator测试环境搭建 2.1 在pypi.Python.org网站下载uiautomator压缩包,解压后python setup.py install安装:或者直接pip install uiautomator 2.2 对于uiautomator工具而言,adb是必不可少的,adb提供的adb shell可

使用Python进行Android自动化测试

下面我们开始第一个简单的Android UI自动化测试 1.使用adb命令连接真机或模拟器 2.打开uiautomatorviewer工具 3.使用uiautomatorviewer工具获取应用的元素进行定位 4.简单介绍unittest框架的使用方法 5.使用Python编写猫宁考勤应用注册模块的自动化测试 1.使用adb命令连接真机或模拟器: 手机USB连接电脑,进入开发者模式: cmd命令:adb devices ,查看手机是否连接 显示错误 这是因为adb的端口被占用,我们需要查看是什么

Python +selenium web自动化测试环境搭建

selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点: *  免费,也不用再为破解QTP而大伤脑筋 *  小巧,对于不同的语言它只是一个包而已,而QTP需要下载安装1个多G 的程序. *  这也是最重要的一点,不管你以前更熟悉C. java.ruby.python.或都是C# ,你都可以通过selenium完成自动化测试,而QTP只支持VBS *  支持多平台:windows.linux.MAC ,支持多浏览器:ie.f