c# pdf to tiff converter : Adding signature to pdf in preview application SDK cloud windows .net winforms class pcb358-part452

13.15. Launching a Web Browser
Problem
You want to launch a browser from a script and have it point to some URL that you
specify.
Solution
The webbrowser module can be used to launch a browser in a platform-independent
manner. For example:
>>> import webbrowser
>>> webbrowser.open('http://www.python.org')
True
>>>
This opens the requested page using the default browser. If you want a bit more control
over how the page gets opened, you can use one of the following functions:
>>> # Open the page in a new browser window
>>> webbrowser.open_new('http://www.python.org')
True
>>>
>>> # Open the page in a new browser tab
>>> webbrowser.open_new_tab('http://www.python.org')
True
>>>
These will try to open the page in a new browser window or tab, if possible and supported
by the browser.
If you want to open a page in a specific browser, you can use the webbrowser.get()
function to specify a particular browser. For example:
>>> c = webbrowser.get('firefox')
>>> c.open('http://www.python.org')
True
>>> c.open_new_tab('http://docs.python.org')
True
>>>
A full list of supported browser names can be found in the Python documentation.
13.15. Launching a Web Browser  |  563
Adding signature to pdf in preview - C# PDF File Permission Library: add, remove, update PDF file permission in C#.net, ASP.NET, MVC, WPF
Tell C# users how to set PDF file permissions, like printing, copying, modifying, extracting, annotating, form filling, etc
adding a signature to a pdf form; create pdf signature stamp
Adding signature to pdf in preview - VB.NET PDF File Permission Library: add, remove, update PDF file permission in vb.net, ASP.NET, MVC, WPF
VB.NET Tutorial for How to Set PDF File Access Permissions Using XDoc.PDF for .NET
add signature to preview pdf; create pdf signature box
Discussion
Being able to easily launch a browser can be a useful operation in many scripts. For
example, maybe a script performs some kind of deployment to a server and you’d like
to have it quickly launch a browser so you can verify that it’s working. Or maybe a
program writes data out in the form of HTML pages and you’d just like to fire up a
browser to see the result. Either way, the webbrowser module is a simple solution.
564  |  Chapter 13: Utility Scripting and System Administration
C# PDF insert image Library: insert images into PDF in C#.net, ASP
to insert and add image, picture, digital photo, scanned signature or logo this technical problem, we provide this C#.NET PDF image adding control, XDoc
add signature to pdf preview; add signature to pdf file
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit PowerPoint
file, as well as add annotations in preview. can convert PowerPoint to PDF (.pdf) online, convert Users can perform text signature adding, freehand signature
add signature block to pdf; pdf signature
CHAPTER 14
Testing, Debugging, and Exceptions
Testing rocks, but debugging? Not so much. The fact that there’s no compiler to analyze
your code before Python executes it makes testing a critical part of development. The
goal of this chapter is to discuss some common problems related to testing, debugging,
and exception handling. It is not meant to be a gentle introduction to test-driven de‐
velopment or the unittest module. Thus, some familiarity with testing concepts is 
assumed.
14.1. Testing Output Sent to stdout
Problem
You have  a  program that  has a method  whose  output goes  to  standard  Output
(sys.stdout). This almost always means that it emits text to the screen. You’d like to
write a test for your code to prove that, given the proper input, the proper output is
displayed.
Solution
Using the unittest.mock module’s patch() function, it’s pretty simple to mock out
sys.stdout for just a single test, and put it back again, without messy temporary vari‐
ables or leaking mocked-out state between test cases.
Consider, as an example, the following function in a module mymodule:
# mymodule.py
def urlprint(protocolhostdomain):
url = '{}://{}.{}'.format(protocolhostdomain)
print(url)
565
C# Create PDF Library SDK to convert PDF from other file formats
file. What's more, you can also protect created PDF file by adding digital signature (watermark) on PDF using C# code. Create
pdf signature stamp; create a pdf signature file
.NET Excel Document Add-on | Manipulate Excel File in .NET
Add-on DLL, which can be used to adding various Excel Able to get a preview of Excel document without loading and GIF image formats, and to TIFF, PDF and SVG
add signature pdf preview; pdf will signature
The built-in print function, by default, sends output to sys.stdout. In order to test
that output is actually getting there, you can mock it out using a stand-in object, and
then make assertions about what happened. Using the unittest.mock module’s patch()
method makes it convenient to replace objects only within the context of a running test,
returning things to their original state immediately after the test is complete. Here’s the
test code for mymodule:
from io import StringIO
from unittest import TestCase
from unittest.mock import patch
import mymodule
class TestURLPrint(TestCase):
def test_url_gets_to_stdout(self):
protocol = 'http'
host = 'www'
domain = 'example.com'
expected_url = '{}://{}.{}\n'.format(protocol, hostdomain)
with patch('sys.stdout', new=StringIO()) as fake_out:
mymodule.urlprint(protocolhostdomain)
self.assertEqual(fake_out.getvalue(), expected_url)
Discussion
The urlprint() function takes three arguments, and the test starts by setting up dummy
arguments for each one. The expected_url variable is set to a string containing the
expected output.
To run the test, the unittest.mock.patch() function is used as a context manager to
replace the value of sys.stdout with a StringIO object as a substitute. The fake_out
variable is the mock object that’s created in this process. This can be used inside the
body of the with statement to perform various checks. When the with statement com‐
pletes, patch conveniently puts everything back the way it was before the test ever ran.
It’s worth noting that certain C extensions to Python may write directly to standard
output, bypassing the setting of sys.stdout. This recipe won’t help with that scenario,
but it should work fine with pure Python code (if you need to capture I/O from such C
extensions, you can do it by opening a temporary file and performing various tricks
involving file descriptors to have standard output temporarily redirected to that file).
More information about capturing IO in a string and StringIO objects can be found in
Recipe 5.6
566  |  Chapter 14: Testing, Debugging, and Exceptions
VB.NET PDF insert image library: insert images into PDF in vb.net
Import graphic picture, digital photo, signature and logo into PDF document. This smart and mature PDF image adding component of RasterEdge VB.NET PDF
create signature field in pdf; add signature to pdf acrobat
VB.NET PDF copy, paste image library: copy, paste, cut PDF images
picture, digital photo, scanned signature, logo, etc. Free Visual Studio .NET PDF library, easy to be Besides image extracting, adding, and removing, RasterEdge
add signature to pdf document; create pdf signature
14.2. Patching Objects in Unit Tests
Problem
You’re writing unit tests and need to apply patches to selected objects in order to make
assertions about how they were used in the test (e.g., assertions about being called with
certain parameters, access to selected attributes, etc.).
Solution
The unittest.mock.patch() function can be used to help with this problem. It’s a little
unusual, but patch() can be used as a decorator, a context manager, or stand-alone. For
example, here’s an example of how it’s used as a decorator:
from unittest.mock import patch
import example
@patch('example.func')
def test1(xmock_func):
example.func(x)       # Uses patched example.func
mock_func.assert_called_with(x)
It can also be used as a context manager:
with patch('example.func'as mock_func:
example.func(x)      # Uses patched example.func
mock_func.assert_called_with(x)
Last, but not least, you can use it to patch things manually:
p = patch('example.func')
mock_func = p.start()
example.func(x)
mock_func.assert_called_with(x)
p.stop()
If necessary, you can stack decorators and context managers to patch multiple objects.
For example:
@patch('example.func1')
@patch('example.func2')
@patch('example.func3')
def test1(mock1mock2mock3):
...
def test2():
with patch('example.patch1'as mock1, \
patch('example.patch2'as mock2, \
patch('example.patch3'as mock3:
...
14.2. Patching Objects in Unit Tests  |  567
C# Word - Annotate Word Page in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET PowerPoint Signature. This is a sample code for adding rubber stamp annotation to word page using C#.
pdf add signature field; copy and paste signature into pdf
XDoc.Tiff for .NET, Comprehensive .NET Tiff Imaging Features
Can be integrated with annotation, signature, and content and output text to text, PDF, or Word Support ICCProfile embedding, removing, adding and updating;
adding signature to pdf doc; create pdf stamp signature
Discussion
patch() works by taking an existing object with the fully qualified name that you pro‐
vide and replacing it with a new value. The original value is then restored after the
completion of the decorated function or context manager. By default, values are replaced
with MagicMock instances. For example:
>>> x = 42
>>> with patch('__main__.x'):
...     print(x)
...
<MagicMock name='x' id='4314230032'>
>>> x
42
>>>
However, you can actually replace the value with anything that you wish by supplying
it as a second argument to patch():
>>> x
42
>>> with patch('__main__.x''patched_value'):
...     print(x)
...
patched_value
>>> x
42
>>>
The MagicMock instances that are normally used as replacement values are meant to
mimic callables and instances. They record information about usage and allow you to
make assertions. For example:
>>> from unittest.mock import MagicMock
>>> m = MagicMock(return_value = 10)
>>> m(12debug=True)
10
>>> m.assert_called_with(12debug=True)
>>> m.assert_called_with(12)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".../unittest/mock.py", line 726, in assert_called_with
raise AssertionError(msg)
AssertionError: Expected callmock(1, 2)
Actual call: mock(1, 2, debug=True)
>>>
>>> m.upper.return_value = 'HELLO'
>>> m.upper('hello')
'HELLO'
>>> assert m.upper.called
568  |  Chapter 14: Testing, Debugging, and Exceptions
>>> m.split.return_value = ['hello''world']
>>> m.split('hello world')
['hello', 'world']
>>> m.split.assert_called_with('hello world')
>>>
>>> m['blah']
<MagicMock name='mock.__getitem__()' id='4314412048'>
>>> m.__getitem__.called
True
>>> m.__getitem__.assert_called_with('blah')
>>>
Typically, these kinds of operations are carried out in a unit test. For example, suppose
you have some function like this:
# example.py
from urllib.request import urlopen
import csv
def dowprices():
u = urlopen('http://finance.yahoo.com/d/quotes.csv?s=@^DJI&f=sl1')
lines = (line.decode('utf-8') for line in u)
rows = (row for row in csv.reader(linesif len(row== 2)
prices = { name:float(pricefor nameprice in rows }
return prices
Normally, this function uses urlopen() to go fetch data off the Web and parse it. To
unit test it, you might want to give it a more predictable dataset of your own creation,
however. Here’s an example using patching:
import unittest
from unittest.mock import patch
import io
import example
sample_data = io.BytesIO(b'''\
"IBM",91.1\r
"AA",13.25\r
"MSFT",27.72\r
\r
''')
class Tests(unittest.TestCase):
@patch('example.urlopen'return_value=sample_data)
def test_dowprices(selfmock_urlopen):
p = example.dowprices()
self.assertTrue(mock_urlopen.called)
self.assertEqual(p,
{'IBM'91.1,
'AA'13.25,
'MSFT' : 27.72})
14.2. Patching Objects in Unit Tests  |  569
if __name__ == '__main__':
unittest.main()
In this example, the urlopen() function in the example module is replaced with a mock
object that returns a BytesIO() containing sample data as a substitute.
An important but subtle facet of this test is the patching of example.urlopen instead of
urllib.request.urlopen. When you are making patches, you have to use the names
as they are used in the code being tested. Since the example code uses from urllib.re
quest import urlopen, the urlopen() function used by the dowprices() function is
actually located in example.
This recipe has really only given a very small taste of what’s possible with the uni
ttest.mock module. The official documentation is a must-read for more advanced
features.
14.3. Testing for Exceptional Conditions in Unit Tests
Problem
You want to write a unit test that cleanly tests if an exception is raised.
Solution
To test for exceptions, use the assertRaises() method. For example, if you want to test
that a function raised a ValueError exception, use this code:
import unittest
# A simple function to illustrate
def parse_int(s):
return int(s)
class TestConversion(unittest.TestCase):
def test_bad_int(self):
self.assertRaises(ValueErrorparse_int, 'N/A')
If you need to test the exception’s value in some way, then a different approach is needed.
For example:
import errno
class TestIO(unittest.TestCase):
def test_file_not_found(self):
try:
f = open('/file/not/found')
except IOError as e:
self.assertEqual(e.errnoerrno.ENOENT)
570  |  Chapter 14: Testing, Debugging, and Exceptions
else:
self.fail('IOError not raised')
Discussion
The assertRaises() method provides a convenient way to test for the presence of an
exception. A common pitfall is to write tests that manually try to do things with excep‐
tions on their own. For instance:
class TestConversion(unittest.TestCase):
def test_bad_int(self):
try:
r = parse_int('N/A')
except ValueError as e:
self.assertEqual(type(e), ValueError)
The problem with such approaches is that it is easy to forget about corner cases, such
as that when no exception is raised at all. To do that, you need to add an extra check for
that situation, as shown here:
class TestConversion(unittest.TestCase):
def test_bad_int(self):
try:
r = parse_int('N/A')
except ValueError as e:
self.assertEqual(type(e), ValueError)
else:
self.fail('ValueError not raised')
The assertRaises() method simply takes care of these details, so you should prefer to
use it.
The one limitation of assertRaises() is that it doesn’t provide a means for testing the
value of the exception object that’s created. To do that, you have to manually test it, as
shown. Somewhere in between these two extremes, you might consider using the as
sertRaisesRegex() method, which allows you to test for an exception and perform a
regular expression match against the exception’s string representation at the same time.
For example:
class TestConversion(unittest.TestCase):
def test_bad_int(self):
self.assertRaisesRegex(ValueError'invalid literal .*',
parse_int'N/A')
A little-known fact about assertRaises() and assertRaisesRegex() is that they can
also be used as context managers:
class TestConversion(unittest.TestCase):
def test_bad_int(self):
with self.assertRaisesRegex(ValueError, 'invalid literal .*'):
r = parse_int('N/A')
14.3. Testing for Exceptional Conditions in Unit Tests  |  571
This form can be useful if your test involves multiple steps (e.g., setup) besides that of
simply executing a callable.
14.4. Logging Test Output to a File
Problem
You want the results of running unit tests written to a file instead of printed to standard
output.
Solution
A very common technique for running unit tests is to include a small code fragment
like this at the bottom of your testing file:
import unittest
class MyTest(unittest.TestCase):
...
if __name__ == '__main__':
unittest.main()
This makes the test file executable, and prints the results of running tests to standard
output. If you would like to redirect this output, you need to unwind the main() call a
bit and write your own main() function like this:
import sys
def main(out=sys.stderrverbosity=2):
loader = unittest.TestLoader()
suite = loader.loadTestsFromModule(sys.modules[__name__])
unittest.TextTestRunner(out,verbosity=verbosity).run(suite)
if __name__ == '__main__':
with open('testing.out''w') as f:
main(f)
Discussion
The interesting thing about this recipe is not so much the task of getting test results
redirected to a file, but the fact that doing so exposes some notable inner workings of
the unittest module.
At a basic level, the unittest module works by first assembling a test suite. This test
suite consists of the different testing methods you defined. Once the suite has been
assembled, the tests it contains are executed.
572  |  Chapter 14: Testing, Debugging, and Exceptions
Documents you may be interested
Documents you may be interested