General purpose Testing Utilities and also special testing tools for for Web Applications
Project description
General purpose Testing Utilities and also special testing tools for Web Applications
Better API for accessing Selenium
With smoothtest you can write nicer tests for web sites.
class SearchEnginesDemo(unittest.TestCase):
def setUp(self):
# We need to enter "single test level" of life for each test
# It will initialize the webdriver if no webdriver is present from upper levels
self._level_mngr = WebdriverManager().enter_level(level=SINGLE_TEST_LIFE)
# Get Xpath browser
self.browser = self._level_mngr.get_xpathbrowser(name=__name__)
def tearDown(self):
# Make sure we quit those webdrivers created in this specific level of life
self._level_mngr.exit_level()
def test_duckduckgo(self):
# Load a local page for the demo
self.browser.get_url('https://duckduckgo.com/')
# Type smoothtest and press enter
self.browser.fill(".//*[@id='search_form_input_homepage']", 'smoothtest\n')
result_link = './/a[@title="smoothtest "]'
# Wait for the result to be available
self.browser.wait_condition(lambda brw: brw.select_xpath(result_link))
# Click on result
self.browser.click(result_link)
# First result should point to github
expected_url = 'https://github.com/joaduo/smoothtest'
wait_url = lambda brw: brw.current_url() == expected_url
# Make sure we end up in the right url
self.assertTrue(self.browser.wait_condition(wait_url))
The API is very XPath oriented, so you can test your XPath with Firefox’s extensions like FirePath.
How to use smoothtest
The main utility is the smoothtest command. This command monitors your project’s files and your unittest files for changes, it will trigger reloading and rerunning tests when a file changes. This means you can work in your code and see how tests are affected automatically. You can select a group of tests files to be monitored - that trigger partial reloads of those same modules - and an group of files or directories to trigger full reloads of the project.
It also provides a ipython UI interface to modify certain values and re-test.
Do
smoothtest
To enter the Ipython UI without specifying any initial test.
If you want to start with a specific test, run this to get possible arguments.
smoothtest --help
Inside Ipython you have commands:
%smoothtest %test %reset %test_config %get %chrome %firefox %phantonjs %steal_xpathbrowser
Where %smoothtest has same parameters as the smoothtest command but adds -u for updating test parameters and -f for forcing a reloading.
smoothtest command is still in beta stage, so some functionality won’t be as reliable as expected. (but still useful for developing tests) You may need to restart the smoothtest command from time to time.
Configuration
You will need a smoothtest_settings.py in your PYTHONPATH that looks like this:
from smoothtest.settings.default import DefaultSettings import logging class Settings(DefaultSettings): web_server_url = 'http://localhost:8011/' webdriver_browser = 'Firefox' #'Chrome' 'PhantomJS' ...
Installing
You can use pip to install it:
pip install smoothtest
Or uninstall it:
pip uninstall smoothtest
Installing virtual screen dependencies
In ubuntu you may need to install
sudo apt-get install xserver-xephyr xvfb
Windows and Mac OSX
Windows
On windows, the smoothtest shell does not work (due to partial support of unix’s fork()) , although running test cases directly will work.
Mac OSX
Inside Mac OS fork() should work, although I haven’t had the chance to test it there. Let me know if you do.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file smoothtest-0.3.6.tar.gz
.
File metadata
- Download URL: smoothtest-0.3.6.tar.gz
- Upload date:
- Size: 50.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c214040f1a6c64175eea61be338aca85146c6f4aedf1aa2679a7a49f6ba3173a |
|
MD5 | 2b17d6ce25a085d2cdbe79ac6bfb36fc |
|
BLAKE2b-256 | 7ce63f3c014e4abf242b68a099acd7970ca53eea0ba9ad73e8d4c8de22ff71a2 |