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

Unified Diff: tools/telemetry/telemetry/page/page_test.py

Issue 452523002: Add ValidateAndMeasurePage to PageTest; this is a replacement for both ValidatePage and MeasurePage. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix more doc. Created 6 years, 4 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 | « no previous file | tools/telemetry/telemetry/page/page_test_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/page/page_test.py
diff --git a/tools/telemetry/telemetry/page/page_test.py b/tools/telemetry/telemetry/page/page_test.py
index ef799dcf9891aca6b0d9d74b192d5b674b48a701..de40cfad4b43252eca5bd93c0054b0d7faf25223 100644
--- a/tools/telemetry/telemetry/page/page_test.py
+++ b/tools/telemetry/telemetry/page/page_test.py
@@ -27,14 +27,11 @@ class MeasurementFailure(Failure):
class PageTest(command_line.Command):
"""A class styled on unittest.TestCase for creating page-specific tests.
- This class also support running a measurement by default (but can be
- overridden by overriding ValidatePage method).
-
- To use this for measurement, subclass from the measurement and
- override MeasurePage. For example:
+ Test should override ValidateAndMeasurePage to perform test
+ validation and page measurement as necessary.
class BodyChildElementMeasurement(PageTest):
- def MeasurePage(self, page, tab, results):
+ def ValidateAndMeasurePage(self, page, tab, results):
body_child_count = tab.EvaluateJavaScript(
'document.body.children.length')
results.AddValue(scalar.ScalarValue(
@@ -44,14 +41,14 @@ class PageTest(command_line.Command):
an example:
class BodyChildElementMeasurement(PageTest):
- def AddCommandLineArgs(parser):
- parser.add_option('--element', action='store', default='body')
+ def AddCommandLineArgs(parser):
+ parser.add_option('--element', action='store', default='body')
- def MeasurePage(self, page, tab, results):
- body_child_count = tab.EvaluateJavaScript(
- 'document.querySelector('%s').children.length')
- results.AddValue(scalar.ScalarValue(
- page, 'children', 'count', child_count))
+ def ValidateAndMeasurePage(self, page, tab, results):
+ body_child_count = tab.EvaluateJavaScript(
+ 'document.querySelector('%s').children.length')
+ results.AddValue(scalar.ScalarValue(
+ page, 'children', 'count', child_count))
Args:
action_name_to_run: This is the method name in telemetry.page.Page
@@ -263,37 +260,40 @@ class PageTest(command_line.Command):
"""Override to examine the page set before the test run. Useful for
example to validate that the pageset can be used with the test."""
- def ValidatePage(self, page, tab, results):
- """Override to check the actual test assertions.
-
- This is where most your test logic should go. By default it runs
- self.MeasurePage.
- """
- self.MeasurePage(page, tab, results)
-
- def MeasurePage(self, page, tab, results):
- """Override to actually measure the page's performance.
+ def ValidateAndMeasurePage(self, page, tab, results):
+ """Override to check test assertions and perform measurement.
- Should call results.AddValue(...) for each result. Can raise an
- exception of add a failure.FailureValue on failure.
+ When adding measurement results, call results.AddValue(...) for
+ each result. Raise an exception or add a failure.FailureValue on
+ failure. page_test.py also provides several base exception classes
+ to use.
Prefer metric value names that are in accordance with python
variable style. e.g., metric_name. The name 'url' must not be used.
Put together:
-
- def MeasurePage(self, page, tab, results):
- res = tab.EvaluateJavaScript('2+2')
- if res != 4:
- raise Exception('Oh, wow.')
- results.AddValue(scalar.ScalarValue(
- page, 'two_plus_two', 'count', res))
+ def ValidateAndMeasurePage(self, page, tab, results):
+ res = tab.EvaluateJavaScript('2+2')
+ if res != 4:
+ raise Exception('Oh, wow.')
+ results.AddValue(scalar.ScalarValue(
+ page, 'two_plus_two', 'count', res))
Args:
page: A telemetry.page.Page instance.
tab: A telemetry.core.Tab instance.
results: A telemetry.results.PageTestResults instance.
"""
+ # TODO(chrishenry): Switch to raise NotImplementedError() when
+ # subclasses no longer override ValidatePage/MeasurePage.
+ self.ValidatePage(page, tab, results)
+
+ def ValidatePage(self, page, tab, results):
+ """DEPRECATED: Use ValidateAndMeasurePage instead."""
+ self.MeasurePage(page, tab, results)
+
+ def MeasurePage(self, page, tab, results):
+ """DEPRECATED: Use ValidateAndMeasurePage instead."""
def RunPage(self, page, tab, results):
# Run actions.
@@ -306,8 +306,7 @@ class PageTest(command_line.Command):
self._RunMethod(page, self._action_name_to_run, action_runner)
self.DidRunActions(page, tab)
- # Run validator.
- self.ValidatePage(page, tab, results)
+ self.ValidateAndMeasurePage(page, tab, results)
def _RunMethod(self, page, method_name, action_runner):
if hasattr(page, method_name):
« no previous file with comments | « no previous file | tools/telemetry/telemetry/page/page_test_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698