python实现hive自动化测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>
本文出自 “cvv” 博客,请务必保留此出处http://2723554.blog.51cto.com/2713554/1786974
以上是关于python实现hive自动化测试的主要内容,如果未能解决你的问题,请参考以下文章