Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Unified Diff: chrome/test/functional/test_utils.py

Issue 222873002: Remove pyauto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/functional/test_pyauto.py ('k') | chrome/test/functional/tracing/pyauto_tracing.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/functional/test_utils.py
===================================================================
--- chrome/test/functional/test_utils.py (revision 261231)
+++ chrome/test/functional/test_utils.py (working copy)
@@ -1,401 +0,0 @@
-# Copyright 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import copy
-import ctypes
-import email
-import logging
-import os
-import shutil
-import smtplib
-import subprocess
-import sys
-import types
-
-import pyauto_functional
-import pyauto
-import pyauto_utils
-import pyauto_errors
-
-
-"""Commonly used functions for PyAuto tests."""
-
-def CrashBrowser(test):
- """Crashes the browser by navigating to special URL."""
- try:
- test.NavigateToURL('chrome://inducebrowsercrashforrealz')
- except pyauto_errors.JSONInterfaceError:
- pass
- else:
- raise RuntimeError(
- 'Browser did not crash at chrome://inducebrowsercrashforrealz')
-
-
-def CopyFileFromDataDirToDownloadDir(test, file_path):
- """Copy a file from data directory to downloads directory.
-
- Args:
- test: derived from pyauto.PyUITest - base class for UI test cases.
- path: path of the file relative to the data directory
- """
- data_file = os.path.join(test.DataDir(), file_path)
- download_dir = test.GetDownloadDirectory().value()
- shutil.copy(data_file, download_dir)
-
-
-def CopyFileFromContentDataDirToDownloadDir(test, file_path):
- """Copy a file from content data directory to downloads directory.
-
- Args:
- test: derived from pyauto.PyUITest - base class for UI test cases.
- path: path of the file relative to the data directory
- """
- data_file = os.path.join(test.ContentDataDir(), file_path)
- download_dir = test.GetDownloadDirectory().value()
- shutil.copy(data_file, download_dir)
-
-
-def RemoveDownloadedTestFile(test, file_name):
- """Delete a file from the downloads directory.
-
- Arg:
- test: derived from pyauto.PyUITest - base class for UI test cases
- file_name: name of file to remove
- """
- downloaded_pkg = os.path.join(test.GetDownloadDirectory().value(),
- file_name)
- pyauto_utils.RemovePath(downloaded_pkg)
- pyauto_utils.RemovePath(downloaded_pkg + '.crdownload')
-
-
-def GoogleAccountsLogin(test, username, password,
- tab_index=0, windex=0, url=None):
- """Log into Google Accounts.
-
- Attempts to login to Google by entering the username/password into the google
- login page and click submit button.
-
- Args:
- test: derived from pyauto.PyUITest - base class for UI test cases.
- username: users login input.
- password: users login password input.
- tab_index: The tab index, default is 0.
- windex: The window index, default is 0.
- url: an alternative url for login page, if None, original one will be used.
- """
- url = url or 'https://accounts.google.com/'
- test.NavigateToURL(url, windex, tab_index)
- email_id = 'document.getElementById("Email").value = "%s"; ' \
- 'window.domAutomationController.send("done")' % username
- password = 'document.getElementById("Passwd").value = "%s"; ' \
- 'window.domAutomationController.send("done")' % password
- test.ExecuteJavascript(email_id, tab_index, windex)
- test.ExecuteJavascript(password, tab_index, windex)
- test.assertTrue(test.SubmitForm('gaia_loginform', tab_index, windex))
-
-
-def VerifyGoogleAccountCredsFilled(test, username, password, tab_index=0,
- windex=0):
- """Verify stored/saved user and password values to the values in the field.
-
- Args:
- test: derived from pyauto.PyUITest - base class for UI test cases.
- username: user log in input.
- password: user log in password input.
- tab_index: The tab index, default is 0.
- windex: The window index, default is 0.
- """
- email_value = test.GetDOMValue('document.getElementById("Email").value',
- tab_index, windex)
- passwd_value = test.GetDOMValue('document.getElementById("Passwd").value',
- tab_index, windex)
- test.assertEqual(email_value, username)
- # Not using assertEqual because if it fails it would end up dumping the
- # password (which is supposed to be private)
- test.assertTrue(passwd_value == password)
-
-
-def Shell2(cmd_string, bg=False):
- """Run a shell command.
-
- Args:
- cmd_string: command to run
- bg: should the process be run in background? Default: False
-
- Returns:
- Output, return code
- """
- if not cmd_string: return ('', 0)
- if bg:
- cmd_string += ' 1>/dev/null 2>&1 &'
- proc = os.popen(cmd_string)
- if bg: return ('Background process: %s' % cmd_string, 0)
- out = proc.read()
- retcode = proc.close()
- if not retcode: # Success
- retcode = 0
- return (out, retcode)
-
-
-def SendMail(send_from, send_to, subject, text, smtp, file_to_send=None):
- """Send mail to all the group to notify about the crash and uploaded data.
-
- Args:
- send_from: From mail id as a string.
- send_to: To mail id. Can be a string representing a single address, or a
- list of strings representing multiple addresses.
- subject: Mail subject as a string.
- text: Mail body as a string.
- smtp: The smtp to use, as a string.
- file_to_send: Attachments for the mail.
- """
- msg = email.MIMEMultipart.MIMEMultipart()
- msg['From'] = send_from
- if isinstance(send_to, list):
- msg['To'] = ','.join(send_to)
- else:
- msg['To'] = send_to
- msg['Date'] = email.Utils.formatdate(localtime=True)
- msg['Subject'] = subject
-
- # To send multiple files in one message, introduce for loop here for files.
- msg.attach(email.MIMEText.MIMEText(text))
- part = email.MIMEBase.MIMEBase('application', 'octet-stream')
- if file_to_send is not None:
- part.set_payload(open(file_to_send,'rb').read())
- email.Encoders.encode_base64(part)
- part.add_header('Content-Disposition',
- 'attachment; filename="%s"'
- % os.path.basename(file_to_send))
- msg.attach(part)
- smtp_obj = smtplib.SMTP(smtp)
- smtp_obj.sendmail(send_from, send_to, msg.as_string())
- smtp_obj.close()
-
-
-def GetFreeSpace(path):
- """Returns the free space (in bytes) on the drive containing |path|."""
- if sys.platform == 'win32':
- free_bytes = ctypes.c_ulonglong(0)
- ctypes.windll.kernel32.GetDiskFreeSpaceExW(
- ctypes.c_wchar_p(os.path.dirname(path)), None, None,
- ctypes.pointer(free_bytes))
- return free_bytes.value
- fs_stat = os.statvfs(path)
- return fs_stat.f_bsize * fs_stat.f_bavail
-
-
-def StripUnmatchedKeys(item_to_strip, reference_item):
- """Returns a copy of 'item_to_strip' where unmatched key-value pairs in
- every dictionary are removed.
-
- This will examine each dictionary in 'item_to_strip' recursively, and will
- remove keys that are not found in the corresponding dictionary in
- 'reference_item'. This is useful for testing equality of a subset of data.
-
- Items may contain dictionaries, lists, or primitives, but only corresponding
- dictionaries will be stripped. A corresponding entry is one which is found
- in the same index in the corresponding parent array or at the same key in the
- corresponding parent dictionary.
-
- Arg:
- item_to_strip: item to copy and remove all unmatched key-value pairs
- reference_item: item that serves as a reference for which keys-value pairs
- to strip from 'item_to_strip'
-
- Returns:
- a copy of 'item_to_strip' where all key-value pairs that do not have a
- matching key in 'reference_item' are removed
-
- Example:
- item_to_strip = {'tabs': 3,
- 'time': 5908}
- reference_item = {'tabs': 2}
- StripUnmatchedKeys(item_to_strip, reference_item) will return {'tabs': 3}
- """
- def StripList(list1, list2):
- return_list = copy.deepcopy(list2)
- for i in range(min(len(list1), len(list2))):
- return_list[i] = StripUnmatchedKeys(list1[i], list2[i])
- return return_list
-
- def StripDict(dict1, dict2):
- return_dict = {}
- for key in dict1:
- if key in dict2:
- return_dict[key] = StripUnmatchedKeys(dict1[key], dict2[key])
- return return_dict
-
- item_to_strip_type = type(item_to_strip)
- if item_to_strip_type is type(reference_item):
- if item_to_strip_type is types.ListType:
- return StripList(item_to_strip, reference_item)
- elif item_to_strip_type is types.DictType:
- return StripDict(item_to_strip, reference_item)
- return copy.deepcopy(item_to_strip)
-
-
-def StringContentCheck(test, content_string, have_list, nothave_list):
- """Check for the presence or absence of strings within content.
-
- Confirm all strings in |have_list| are found in |content_string|.
- Confirm all strings in |nothave_list| are not found in |content_string|.
-
- Args:
- content_string: string containing the content to check.
- have_list: list of strings expected to be found within the content.
- nothave_list: list of strings expected to not be found within the content.
- """
- for s in have_list:
- test.assertTrue(s in content_string,
- msg='"%s" missing from content.' % s)
- for s in nothave_list:
- test.assertTrue(s not in content_string,
- msg='"%s" unexpectedly contained in content.' % s)
-
-
-def CallFunctionWithNewTimeout(self, new_timeout, function):
- """Sets the timeout to |new_timeout| and calls |function|.
-
- This method resets the timeout before returning.
- """
- timeout_changer = pyauto.PyUITest.ActionTimeoutChanger(
- self, new_timeout)
- logging.info('Automation execution timeout has been changed to %d. '
- 'If the timeout is large the test might appear to hang.'
- % new_timeout)
- function()
- del timeout_changer
-
-
-def GetOmniboxMatchesFor(self, text, windex=0, attr_dict=None):
- """Fetch omnibox matches with the given attributes for the given query.
-
- Args:
- text: the query text to use
- windex: the window index to work on. Defaults to 0 (first window)
- attr_dict: the dictionary of properties to be satisfied
-
- Returns:
- a list of match items
- """
- self.SetOmniboxText(text, windex=windex)
- self.WaitUntilOmniboxQueryDone(windex=windex)
- if not attr_dict:
- matches = self.GetOmniboxInfo(windex=windex).Matches()
- else:
- matches = self.GetOmniboxInfo(windex=windex).MatchesWithAttributes(
- attr_dict=attr_dict)
- return matches
-
-
-def GetMemoryUsageOfProcess(pid):
- """Queries the system for the current memory usage of a specified process.
-
- This function only works in Linux and ChromeOS.
-
- Args:
- pid: The integer process identifier for the process to use.
-
- Returns:
- The memory usage of the process in MB, given as a float. If the process
- doesn't exist on the machine, then the value 0 is returned.
- """
- assert pyauto.PyUITest.IsLinux() or pyauto.PyUITest.IsChromeOS()
- process = subprocess.Popen('ps h -o rss -p %s' % pid, shell=True,
- stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- stdout = process.communicate()[0]
- if stdout:
- return float(stdout.strip()) / 1024
- else:
- return 0
-
-
-def LoginToDevice(test, test_account='test_google_account'):
- """Login to the Chromeos device using the given test account.
-
- If no test account is specified, we use test_google_account as the default.
- You can choose test accounts from -
- chrome/test/data/pyauto_private/private_tests_info.txt
-
- Args:
- test_account: The account used to login to the Chromeos device.
- """
- if not test.GetLoginInfo()['is_logged_in']:
- credentials = test.GetPrivateInfo()[test_account]
- test.Login(credentials['username'], credentials['password'])
- login_info = test.GetLoginInfo()
- test.assertTrue(login_info['is_logged_in'], msg='Login failed.')
- else:
- test.fail(msg='Another user is already logged in. Please logout first.')
-
-def GetInfobarIndexByType(test, infobar_type, windex=0, tab_index=0):
- """Returns the index of the infobar of the given type.
-
- Args:
- test: Derived from pyauto.PyUITest - base class for UI test cases.
- infobar_type: The infobar type to look for.
- windex: Window index.
- tab_index: Tab index.
-
- Returns:
- Index of infobar for infobar type, or None if not found.
- """
- infobar_list = (
- test.GetBrowserInfo()['windows'][windex]['tabs'][tab_index] \
- ['infobars'])
- for infobar in infobar_list:
- if infobar_type == infobar['type']:
- return infobar_list.index(infobar)
- return None
-
-def WaitForInfobarTypeAndGetIndex(test, infobar_type, windex=0, tab_index=0):
- """Wait for infobar type to appear and returns its index.
-
- If the infobar never appears, an exception will be raised.
-
- Args:
- test: Derived from pyauto.PyUITest - base class for UI test cases.
- infobar_type: The infobar type to look for.
- windex: Window index. Defaults to 0 (first window).
- tab_index: Tab index. Defaults to 0 (first tab).
-
- Returns:
- Index of infobar for infobar type.
- """
- test.assertTrue(
- test.WaitUntil(lambda: GetInfobarIndexByType(
- test, infobar_type, windex, tab_index) is not None),
- msg='Infobar type for %s did not appear.' % infobar_type)
- # Return the infobar index.
- return GetInfobarIndexByType(test, infobar_type, windex, tab_index)
-
-def AssertInfobarTypeDoesNotAppear(test, infobar_type, windex=0, tab_index=0):
- """Check that the infobar type does not appear.
-
- This function waits 20s to assert that the infobar does not appear.
-
- Args:
- test: Derived from pyauto.PyUITest - base class for UI test cases.
- infobar_type: The infobar type to look for.
- windex: Window index. Defaults to 0 (first window).
- tab_index: Tab index. Defaults to 0 (first tab).
- """
- test.assertFalse(
- test.WaitUntil(lambda: GetInfobarIndexByType(
- test, infobar_type, windex, tab_index) is not None, timeout=20),
- msg=('Infobar type for %s appeared when it should be hidden.'
- % infobar_type))
-
-def OpenCroshVerification(self):
- """This test opens crosh.
-
- This function assumes that no browser windows are open.
- """
- self.assertEqual(0, self.GetBrowserWindowCount())
- self.OpenCrosh()
- self.assertEqual(1, self.GetBrowserWindowCount())
- self.assertEqual(1, self.GetTabCount(),
- msg='Could not open crosh')
- self.assertEqual('crosh', self.GetActiveTabTitle())
« no previous file with comments | « chrome/test/functional/test_pyauto.py ('k') | chrome/test/functional/tracing/pyauto_tracing.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698