diff --git a/CHANGELOG b/CHANGELOG
index d57c16d06..e335e7a03 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,6 +6,9 @@
module. Thanks Mikhail Chernykh for the report and Bruno Oliveira for the
PR.
+- fix #1198: ``--pastebin`` option now works on Python 3. Thanks
+ Mehdy Khoshnoody for the PR.
+
- fix #1204: another error when collecting with a nasty __getattr__().
Thanks Florian Bruhin for the PR.
diff --git a/_pytest/pastebin.py b/_pytest/pastebin.py
index f5e479158..20738134e 100644
--- a/_pytest/pastebin.py
+++ b/_pytest/pastebin.py
@@ -61,8 +61,8 @@ def create_new_paste(contents):
'expiry': '1week',
}
url = 'https://bpaste.net'
- response = urlopen(url, data=urlencode(params)).read()
- m = re.search(r'href="/raw/(\w+)"', response)
+ response = urlopen(url, data=urlencode(params).encode()).read()
+ m = re.search(r'href="/raw/(\w+)"', response.decode())
if m:
return '%s/show/%s' % (url, m.group(1))
else:
diff --git a/testing/test_pastebin.py b/testing/test_pastebin.py
index 1b5fb1dca..2fe4bc137 100644
--- a/testing/test_pastebin.py
+++ b/testing/test_pastebin.py
@@ -1,7 +1,7 @@
import sys
import pytest
-class TestPasting:
+class TestPasteCapture:
@pytest.fixture
def pastebinlist(self, monkeypatch, request):
@@ -62,7 +62,7 @@ class TestPaste:
class DummyFile:
def read(self):
# part of html of a normal response
- return 'View raw.'
+ return b'View raw.'
return DummyFile()
if sys.version_info < (3, 0):
@@ -78,10 +78,11 @@ class TestPaste:
assert result == 'https://bpaste.net/show/3c0c6750bd'
assert len(mocked_urlopen) == 1
url, data = mocked_urlopen[0]
+ assert type(data) is bytes
lexer = 'python3' if sys.version_info[0] == 3 else 'python'
assert url == 'https://bpaste.net'
- assert 'lexer=%s' % lexer in data
- assert 'code=full-paste-contents' in data
- assert 'expiry=1week' in data
+ assert 'lexer=%s' % lexer in data.decode()
+ assert 'code=full-paste-contents' in data.decode()
+ assert 'expiry=1week' in data.decode()