我正在构建测试博客网站的框架。我有一个到目前为止由两个表组成的Sqlite3数据库:“ post”和“ user”。我想验证一下,当新用户注册时,他的名字出现在“用户”表中。这是TDD框架。到目前为止,我有3个文件:位于data.json文件中的所有数据,位于setup.py文件和第3个文件中的所有方法均为test.py。当我运行测试时,它给我一个错误。我的问题是:在这种情况下我该如何查询
#setup.py
from appium import webdriver
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from datetime import datetime
import time
import logging
import json
import sqlite3
#Loading DateTime Stamp into variable
now = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
#Initiating Logging
logging.basicConfig(filename='/path to testLog_%s.log' % now,
level=logging.INFO, format='%(asctime)s:%(levelname)s:%(funcName)s:%(message)s:')
#Loading Data into variable
json_file = '/path to data.json'
#Opens json data file once to be used many times during one test case run
with open(json_file) as f:
uiLocatorsAndTestData = json.load(f)
def load_value(key, elemVal):
'''this function reads data from json file and return requested value'''
value = (uiLocatorsAndTestData[key])
for item in value:
myValue = (item[elemVal])
return myValue
class BrowserActions(object):
#this function initialise class BrowserActions
def __init__(self,driver=None):
''' Acts as a constructor for the class and
when an object is instantiated, this function is called.
Self represents the instantiating object. '''
if driver != None:
self.driver = driver
def dataBase(self, locateTable ,tableName, locateItemInTable, chosenName):
myTable = load_value(locateTable ,tableName)
userName = load_value(locateItemInTable ,chosenName)
try:
conn = sqlite3.connect('/Users/a./Desktop/Automation_Work/ALL_Working_Frame_APPIUM/FLASK_WEB_SITE/app/site.db')
self.c = conn.cursor()
self.c.execute("SELECT * FROM",(myTable), "WHERE username=",(userName))
results = self.c.fetchall()
logging.info('\n')
logging.info(results)
conn.close()
assert results == username
except Exception as e:
time.sleep(1)
self.driver.save_screenshot('/Users/a./Desktop/Automation_Work/ALL_Working_Frame_APPIUM/paperless_frame/tests_output/screenshots/screenshot-%s.png' % now)
logging.info('\n')
logging.info(' DID NOT CHOOSE - - - "{}", value: "{}"'.format(myTable, userName))
logging.info(e)
# test.py
from setup import BrowserActions
import time
class test_dataBase_Flask_website:
action = BrowserActions(object)
action.setupBrowser('chrome')
action.webPage('WEB_PAGE_NAME', 'flask')
action.click_element('FLASK_NAVIGATION','li_REGISTER_navigation_button')
action.send_keys('FLASK_SEND_KEYS_FIND_ELEMENT','id_USERNAME_register_input','FLASK_SEND_KEYS_TYPE_VALUE','id_USERNAME_register_input')
action.send_keys('FLASK_SEND_KEYS_FIND_ELEMENT','id_EMAIL_register_input','FLASK_SEND_KEYS_TYPE_VALUE','id_EMAIL_register_input')
action.send_keys('FLASK_SEND_KEYS_FIND_ELEMENT','id_PASSWORD_register_input','FLASK_SEND_KEYS_TYPE_VALUE','id_PASSWORD_register_input')
action.send_keys('FLASK_SEND_KEYS_FIND_ELEMENT','id_CONFIRM_PASSWORD_register_input','FLASK_SEND_KEYS_TYPE_VALUE','id_CONFIRM_PASSWORD_register_input')
action.click_element('FLASK_NAVIGATION','id_SIGNUP_register_button')
action.dataBase('FLASK_database_all_tables','id_user_table','FLASK_database_all_items','id_user_table_username_Petrov')
action.tearDownBrowser()
从安装程序导入BrowserActions 导入时间
class test_dataBase_Flask_website:
action = BrowserActions(object)
action.setupBrowser('chrome')
action.webPage('WEB_PAGE_NAME', 'flask')
action.click_element('FLASK_NAVIGATION','li_REGISTER_navigation_button')
action.send_keys('FLASK_SEND_KEYS_FIND_ELEMENT','id_USERNAME_register_input','FLASK_SEND_KEYS_TYPE_VALUE','id_USERNAME_register_input')
action.send_keys('FLASK_SEND_KEYS_FIND_ELEMENT','id_EMAIL_register_input','FLASK_SEND_KEYS_TYPE_VALUE','id_EMAIL_register_input')
action.send_keys('FLASK_SEND_KEYS_FIND_ELEMENT','id_PASSWORD_register_input','FLASK_SEND_KEYS_TYPE_VALUE','id_PASSWORD_register_input')
action.send_keys('FLASK_SEND_KEYS_FIND_ELEMENT','id_CONFIRM_PASSWORD_register_input','FLASK_SEND_KEYS_TYPE_VALUE','id_CONFIRM_PASSWORD_register_input')
action.click_element('FLASK_NAVIGATION','id_SIGNUP_register_button')
action.dataBase('FLASK_database_all_tables','id_user_table','FLASK_database_all_items','id_user_table_username_Petrov')
action.tearDownBrowser()
日志文件显示了一个错误,例如: 2019-08-23 22:40:54,881:INFO:dataBase:'BrowserActions'对象没有属性'c'